首页 > 编程语言 > 详细

Python 巧妙的实现并行

时间:2018-02-08 15:11:53      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:star   art   ssi   image   inf   body   分时   img   com   

需求

  给定一个list   针对list 中每个元素执行一定的操作(这个操作很费时间,例如爬数据的时候调用某个网站的接口),返回操作后的list

  例如 给定 1-10个数,在每个数字后面加个字母a

 

方法

1、利用线程池pool 及map 函数 实现

 1 from multiprocessing import Pool
 2 from multiprocessing.dummy import Pool as ThreadPool
 3 import time
 4 pool = ThreadPool(10)
 5 
 6 #定义函数
 7 def add(x):
 8     time.sleep(0.2)
 9     return str(x) + a
10 
11 ll = list(range(0,10))
12 
13 
14 #原始map
15 start = time.time()
16 res = map(add, ll)
17 print res
18 print time.time() - start
19 
20 #线程池map
21 start = time.time()
22 res = pool.map(add,ll) 
23 print res
24 print time.time() - start

技术分享图片

结论:

可以发现 运行时间缩短了。一定要保证所执行的函数比较费时间,才可以用,否则 大部分时间都用在分发任务上了,

多线程不一定比单线程快。 感兴趣的同学可以试试把time.sleep()去掉。

参考:

http://python.jobbole.com/81690/

 

Python 巧妙的实现并行

标签:star   art   ssi   image   inf   body   分时   img   com   

原文:https://www.cnblogs.com/zle1992/p/8431312.html

(0)
(1)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号