python 并发编程 多进程 Process对象的其他属性方法 terminate与is_alive name pid 函数

进程对象的其他方法一: terminate与is_alive

 

is_alive()  立刻查看的子进程结果 是否存活

from multiprocessing import Process
import time
import os

def task(name):


    print("%s is running" % (name))
    time.sleep(3)
    print("%s is done" % (name))


if __name__ == "__main__":

    p = Process(target=task,args=("子进程",))
    p.start()
    # 查看的子进程结果是否存活
    print(p.is_alive())
    p.join()

    # 查看的子进程结果是否存活
    print(p.is_alive())
    print("",)


'''
True 子进程存活
子进程 is running
子进程 is done
False 子进程不存活
主
'''

terminate() 关闭子进程,这种也是给操作系统发送信号和start 一样

子进程还活着

from multiprocessing import Process
import time
import os

def task(name):


    print("%s is running" % (name))
    time.sleep(3)
    print("%s is done" % (name))


if __name__ == "__main__":

    p = Process(target=task,args=("子进程",))
    p.start()

    # 关闭子进程 给操作系统发送信号
    p.terminate()
    print(p.is_alive())
    p.join()

    print("",)

'''
True 子进程还活着
主
'''

关闭子进程,把内存空间回收,是操作系统做的,但是什么时候关闭进程的时间就不知道了

terminate() 只是发送信号

解决:需要time.sleep() 让程序睡的时间长点

信号发出后,需要操作系统反应一段时间

from multiprocessing import Process
import time
import os

def task(name):


    print("%s is running" % (name))
    time.sleep(3)
    print("%s is done" % (name))


if __name__ == "__main__":

    p = Process(target=task,args=("子进程",))
    p.start()

    # 关闭子进程 给操作系统发送信号
    p.terminate()
    time.sleep(3)
    print(p.is_alive())
    p.join()

    print("",)

'''
False
主
'''

pid 查看子进程pid 

p.pid

 name 查看子进程名字

p.name

不设置进程名字 默认会给子进程 设置名字 Process-1

 

 

原文地址:https://www.cnblogs.com/mingerlcm/p/11029260.html