5.1.2 网络编程进阶---开启子进程的两种方式

当主进程开启子进程后,主进程会与子进程并行执行。当主进程执行后不会立马结束进程,而是会等子进程结束才结束。

第一种方式:

from multiprocessing import Process
import 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 Process
import 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

猜你喜欢

转载自www.cnblogs.com/beallaliu/p/9189845.html