关于多进程,网络上有很多多线程理论,这里不赘述。
这篇文章通过实验直接展示了Python的“多进程”的效果,即使不了解详细情况,在工作中需要使用的时候也可以直接复制代码使用。 并不是所有的网络工程师都要花时间研究代码……。
实验中的任务和使用时:
任务1:1s
任务2:2s
任务3:3s
单进程代码
单进程
上面的代码非常普通地执行三个任务。 os.getpID ()显示当前的进程id,最后的t2-t1计算时间差,让我们来看看效果。 ) )。
单过程效应
由效果可知,3个任务依次执行,进程ID均为1112,分别为1s、2s、3s,因此共计6s。 现在,让我们来看看多进程。
多进程代码
多进程
其实并不比前面的代码多几行,引入多进程“多处理”模块,设置进程池,执行任务。 观察效果() 9503.163.com) )。
多进程效应
如上图所示,使用多进程后,合计执行时间减少到了4秒,我注意这里故意挖了个洞。 为什么是多进程,任务1和任务3的进程ID相同吗? 明明3个任务同时执行的话,3s (任务3消耗的时间)就应该完成了,为什么是4秒?
由于进程池pool=multiprocessing.Pool ()没有设置参数,因此缺省值为CPU的内核数。 我的笔记本电脑只有双核。 也就是说,默认值为2。 也就是说,一次只能同时执行两个任务。 所以上面的代码:任务1和任务2同时开始执行,任务1执行后,任务3继续执行……明白吗?
现在,如果将pool的值更改为3以上,理论上可以同时执行3个以上的任务。 () 9504.163.com)。
pool=3
多进程效应
上图所示的效果是,3个任务同时执行,分别有不同的进程ID,执行时间只有3秒。
实验结束。
本篇文章主要以Python、网络通讯、linux为主,基本上都是实战说话,都是原创。 欢迎评论、收藏、订阅,大家一起学习。