本文主要是介绍Python自学成才之路 多进程开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在python中可以通过os.fork()创建子进程,但是这种方式只能在linux,unix,mac下面使用,不能跨平台,所以一般不推荐使用这种方式。Python提供了一个multiprocessing模块来创建多进程,这种方式写起来更简单,且支持跨平台,一般推荐使用multiprocessing模块来创建多线程。
1.使用Process来创建进程
from multiprocessing import Process
import osdef pringLog(msg):print(msg)print('子进程id: %s' % os.getpid())print('父进程id: %s' % os.getppid())if __name__ == '__main__':p = Process(target=pringLog, args=('hello world',))p.start()print('父进程id: %s' % os.getpid())print("我是主进程代码")输出:
父进程id: 34076
我是主进程代码
hello world
子进程id: 30084
父进程id: 34076
注意:如果是在windows系统下,创建进程的代码需要放在__name__ == '_main_'下面,否则会报错。
2.通过继承Process来创建进程
from multiprocessing import Process
import os
import timeclass MyProcess(Process):def run(self):print('子进程id %s' %os.getpid())print('父进程id %s' % os.getppid())for x in range(5):print('子进程 %s' %x)time.sleep(1)if __name__ == '__main__':myprocess = MyProcess()myprocess.start()myprocess.join()print('所有进程执行完毕')
输出:
子进程id 23388
父进程id 29012
子进程 0
子进程 1
子进程 2
子进程 3
子进程 4
所有进程执行完毕
3.一个小技能,join函数
Join可以让主进程阻塞,直到子进程执行完毕才会执行主进程后面的代码,通过添加超时参数,还能控制阻塞时长。
from multiprocessing import Process
import timedef countdown():for x in range(5):print("count:%s" % x)time.sleep(1)if __name__ == '__main__':p = Process(target=countdown)p.start()print('主进程')# 一直阻塞,直到子进程执行完毕# p.join()# 阻塞三秒p.join(3)print('所有进程执行完毕')
输出:
主进程
count:0
count:1
count:2
所有进程执行完毕
count:3
count:4
本人是做大数据开发的,在微信上开了个个人号,会经常在上面分享一些学习心得,原创文章都会首发到公众号上,感兴趣的盆友可以关注下哦!
备注:微信公众号搜索‘大数据入坑指南
这篇关于Python自学成才之路 多进程开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!