2014年一码中特
首頁 > 編程語言 > 詳細

Python 巧妙的實現并行

時間:2018-02-08 15:11:53      閱讀:965      評論: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

(5)
(6)
   
舉報
評論 一句話評論(0
登錄后才能評論!
? 2014 bubuko.com 版權所有 魯ICP備09046678號-4
打開技術之扣,分享程序人生!
             

魯公網安備 37021202000002號

2014年一码中特 网络投资理财平台 中国最大的股票配资平台 安徽快3遗漏查询 麻将听牌技巧 闲来麻将长沙麻将 哈灵上海麻将亲友聚会 快乐12分开奖走势 广西新快三开奖结果 北京十一选五体彩开 快乐双彩2020003期开奖结果