当主进程开启子进程后,主进程会与子进程并行执行。当主进程执行后不会立马结束进程,而是会等子进程结束才结束,好去清理僵尸子进程(给子进程收尸)。
第一种方式:
from multiprocessing import Processimport time def task(name): print(‘%s is running‘ % name) time.sleep(3) print(‘%s is done‘ % name) if __name__ == ‘__main__‘: p = Process(target=task, kwargs={‘name‘: ‘子进程1‘}) # p = Process(target=task, args=(‘子进程1‘,)) p.start() # 仅仅只是给操作系统发送了一个信号,然后继续往下执行,不会等待子进程执行完成。但是会等子进程结束后,能结束主进程。 print(‘主‘) #会执行子进程执行结束后,才结束自己进程。 # 输出结果:# 主# 子进程1 is running# 子进程1 is done 第二种方式: 继承的方式
from multiprocessing import Processimport time class MyProcess(Process): # 继承Process类 def __init__(self, name): super().__init__() self.name = name def run(self): # 必须重写run方法 print(‘subprocess starting %s‘ % self.name) time.sleep(3) print(‘end subprocess %s‘ % self.name) if __name__ == ‘__main__‘: p = MyProcess(‘xxx‘) p.start() # start自动绑定到run方法 print(‘主线程‘) # 输出结果:# 主线程# subprocess starting xxx# end subprocess xxx
原文地址:https://www.cnblogs.com/beallaliu/p/9189845.html
时间: 2024-10-19 15:20:54