python多进程multiprocessing使用,看这篇就够了(一)

1. 看代码

python多进程multiprocessing使用,看这篇就够了(一)_第1张图片

 python多进程multiprocessing使用,看这篇就够了(一)_第2张图片

 以上可看到,2个任务(子进程)同时启动,下载时间由耗时最久的任务决定。

再看看没有使用多进程的情况,下载时间是2个任务下载时间之和。

python多进程multiprocessing使用,看这篇就够了(一)_第3张图片

python多进程multiprocessing使用,看这篇就够了(一)_第4张图片

down_time变量的备注写错了,应该是2-5秒。

2.在电脑里,每个进程都是独立的,都有自己的资源、内存空间,当然都有唯一的id,打开电脑的任务管理器,可以看到,这里显示电脑正在运行的所有进程。 进程是正在运行的程序的实例。

python多进程multiprocessing使用,看这篇就够了(一)_第5张图片

3.多进程是怎么运行的呢,python的os包提供了getpid()方法可以打印进程id, 

python多进程multiprocessing使用,看这篇就够了(一)_第6张图片

4. 如果不使用join(join起到阻塞作用), 看看是什么情况: 

python多进程multiprocessing使用,看这篇就够了(一)_第7张图片

 5.以上可以看出join的作用了,使用join,主进程跑到join那里,处于挂起状态,看源码,join可以通过设置timeout来决定主进程等待多长时间,若子进程在timeout用完了还没跑完,主进程会杀死子进程。

python多进程multiprocessing使用,看这篇就够了(一)_第8张图片

6. 这里引出守护进程daemon, 将子进程用daemon设置为True, 则子进程成为主进程的守护线程,主进程死,则守护线程死。

python多进程multiprocessing使用,看这篇就够了(一)_第9张图片

7. 各个进程是独立的,不会共享全局变量,那么进程间如何进行进行通信呢,可以使用multiprocessing的Queue,

例如,要计算从0到1亿的和,如果不使用多进程,时间将会很长,如果使用多进程,将0到1亿分成几段,每一段使用一个进程进行计算,最后将各个进程的计算的结果相加,就能大大减少计算的时间。

python多进程multiprocessing使用,看这篇就够了(一)_第10张图片

 ps: 线上项目千万不要这样用列表装大量数据,服务器内存会爆炸!!!

未完待续……

你可能感兴趣的:(python,python,开发语言,后端,多进程)