进程

Process对象方法:

join方法:

  • 在子进程执行完毕后才继续主进程执行,否则一直在原地阻塞

  • 判断主进程内子进程是否执行完毕

from multiprocessing import Process
import time
import random
def task(name):
    print('%s is piaoing' %name)
    time.sleep(random.randint(1,3))
    print('%s is piao end' %name)
if __name__ == '__main__':
    p1=Process(target=task,args=('egon',))
    p2=Process(target=task,args=('alex',))
    p3=Process(target=task,args=('yuanhao',))
    p4=Process(target=task,args=('wupeiqi',))
    p1.start()
    p2.start()
    p3.start()
    p4.start()
    
p.join()是让主线程等待p的结束,卡住的是主进程而绝非子进程p

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

  • p.is_alive() 判断是否存在子进程

    • p.terminate() 告诉操作系统,终止子进程

from multiprocessing import Process
import time
import random
def task(name):
    print('%s is piaoing' %name)
    time.sleep(random.randrange(1,5))
    print('%s is piao end' %name)
if __name__ == '__main__':
    p1=Process(target=task,args=('egon',))
    p1.start()
    p1.terminate() #关闭进程不会立即关闭,所以is_alive立刻查看的结果可能还是存活
    print(p1.is_alive)  # 判断是否存活
    

进程对象的其他属性:name与pid

  • pid 进程号

    • name 指定进程名

from multiprocessing import Process
import time
import random
def task(name):
    print('%s is piaoing' %name)
    time.sleep(random.randrange(1,5))
    print('%s is piao end' %name)
if __name__ == '__main__':
    p1=Process(target=task,args=('egon',),name='子进程1') #可以用关键参数来指定进程名
    p1.start()
    print(p1.name,p1.pid,)

僵尸进程: - 子进程已经结素,但是pid号为被销毁

--占用pid 进程孤儿进程

孤儿进程: - 子进程还在执行,但父进程意外结束

- 擦破做系统福利院1 --》 回收孤儿进程

守护进程: - 主进程结束后,主进程产生的子进程都结束 (daemon)

-守护进程会在主进程代码执行结束后就终止

-守护进程内无法再开启子进程,否则抛出异常

from multiprocessing import Process
import time
import random
def task(name):
    print('%s is piaoing' %name)
    time.sleep(random.randrange(1,3))
    print('%s is piao end' %name)
if __name__ == '__main__':
    p=Process(target=task,args=('egon',))
    p.daemon=True #一定要在p.start()前设置,设置p为守护进程,禁止p创建子进程,并且父进程代码执行结束,p即终止运行
    p.start()
    print('主') #只要终端打印出这一行内容,那么守护进程p也就跟着结束掉了

进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,而共享带来的是竞争,竞争带来的结果就是错乱

进程产生子进程,会在开辟一个名称空间,进程之间互不干扰!!

原文地址:https://www.cnblogs.com/shaozheng/p/11714474.html