码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-06-16 12:07:48      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:自己   roc   targe   __name__   tin   自动   执行   继承   绑定   

当主进程开启子进程后,主进程会与子进程并行执行。当主进程执行后不会立马结束进程,而是会等子进程结束才结束,好去清理僵尸子进程(给子进程收尸)。

 

第一种方式:

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 网络编程进阶---开启子进程的两种方式

标签:自己   roc   targe   __name__   tin   自动   执行   继承   绑定   

原文地址:https://www.cnblogs.com/beallaliu/p/9189845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!