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

Posted beallaliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
















































以上是关于5.1.2 网络编程进阶---开启子进程的两种方式的主要内容,如果未能解决你的问题,请参考以下文章

多进程之开启进程的两种方式

1-2 开启进程的两种方式

开启子进程的两种方式

创建并开启子进程的两种方式

进程理论以及开启子进程的两种方式

创建并开启子进程的两种方式2