BZ易风

导航

 
 1 # -*- coding:utf-8 -*-
 2 from multiprocessing import Pool
 3 import os,time,random
 4 
 5 
 6 def worker(msg):
 7     t_start = time.time()
 8     print("%s开始执行" % (msg))
 9     # print("进程号是:%d" % os.getpgid())
10     # random.random()随机生成0-1之间的浮点数
11     time.sleep(random.random()*2)
12     t_stop = time.time()
13     print(msg,"执行完毕,耗时%.2f" % (t_stop-t_start))
14 
15 
16 # worker(1)
17 def main():
18     # 定义一个进程池,最大进程为3
19 
20     po = Pool(3)
21     for i in range(0,10):
22         # Pool().apply_async(要调用的目标,(以元祖的形式传递给目标的参数,))
23         # 每次循环将会用空闲出来的子进程去调用目标
24         po.apply_async(worker,(i,))
25 
26     print("----------start------------")
27     po.close()  # 关闭进程池,关闭后po不再接受新的请求
28     po.join()  # 等带po中所有子进程执行完成,必须放在close语句之后
29     print("----------end------------")
30 
31 
32 if __name__ == '__main__':
33     main()
----------start------------
0开始执行
1开始执行
2开始执行
2 执行完毕,耗时0.04
3开始执行
1 执行完毕,耗时0.88
4开始执行
0 执行完毕,耗时1.33
5开始执行
4 执行完毕,耗时1.02
6开始执行
3 执行完毕,耗时1.88
7开始执行
7 执行完毕,耗时0.96
8开始执行
6 执行完毕,耗时0.99
9开始执行
5 执行完毕,耗时1.90
8 执行完毕,耗时1.09
9 执行完毕,耗时1.19
----------end------------

  

posted on 2019-08-21 14:59  BZ易风  阅读(191)  评论(0编辑  收藏  举报