首页 > 编程语言 > 详细

python高级模块concurrent 进程与线程效率对比

时间:2020-06-05 00:17:27      阅读:63      评论:0      收藏:0      [点我收藏+]

最近项目中用到了多进程来算模型的特征,看看python高级库的多进程与多线程的效率

 1 from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor
 2 from concurrent import futures
 3 import time
 4 
 5 
 6 class Fast(object):
 7 
 8     @staticmethod
 9     def get_data(seq):
10 
11         time.sleep(0.02)
12         return seq
13 
14 
15 if __name__ == __main__:
16     data_list_p = []
17     data_list_t = []
18     data_list_ = []
19 
20     # 进程
21     def main_p():
22         fast_p = Fast()
23         with ProcessPoolExecutor(max_workers=8) as executor:
24             future = [executor.submit(fast_p.get_data, i) for i in range(100)]
25             for i in futures.as_completed(future):
26                 data_list_p.append(i.result())
27         print("进程", data_list_p)
28     start = time.time()
29     main_p()
30     end = time.time()
31     print(end - start, "进程")
32 
33     # 线程
34     def main_t():
35         fast_t = Fast()
36         with ThreadPoolExecutor(max_workers=8) as executor:
37             future = [executor.submit(fast_t.get_data, i) for i in range(100)]
38             futures.as_completed(future)
39             for i in futures.as_completed(future):
40                 data_list_t.append(i.result())
41         print("线程", data_list_t)
42     start_t = time.time()
43     main_t()
44     end_t = time.time()
45     print(end_t - start_t, "线程")
46 
47     # 原始
48     start_ = time.time()
49     fast = Fast()
50     [data_list_.append(fast.get_data(i)) for i in range(100)]
51     print(data_list_)
52 
53     end_ = time.time()
54     print(end_ - start_)

输出如下:

技术分享图片

 

小结:io频繁推荐多线程,计算频繁推荐多进程

python高级模块concurrent 进程与线程效率对比

原文:https://www.cnblogs.com/tttzqf/p/13047132.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!