作家
登录

Python一行代码完成并行任务

作者: 来源: 2017-04-14 10:02:25 阅读 我要评论

  •     ] 
  •  
  •     queue = Queue.Queue() 
  •  
  •     worker_threads = build_worker_pool(queue, 4) 
  •  
  •     start_time = time.time() 
  •  
  •   
  •  
  •     # Add the urls to process 
  •  
  •     for url in urls: 
  •  
  •         queue.put(url)   
  •  
  •     # Add the poison pillv 
  •  
  •     for worker in worker_threads: 
  •  
  •         queue.put("quit"
  •  
  •     for worker in worker_threads: 
  •  
  •         worker.join() 
  •  
  •   
  •  
  •     print "Done! Time taken: {}".format(time.time() - start_time) 
  •  
  •   
  •  
  • def build_worker_pool(queue, size): 
  •  
  •     workers = [] 
  •  
  •     for _ in range(size): 
  •  
  •         worker = Consumer(queue) 
  •  
  •         worker.start() 
  •  
  •         workers.append(worker) 
  •  
  •     return workers 
  •  
  •   
  •  
  • if __name__ == '__main__': 
  •  
  •     Producer()  
  • 它切实其实能运行,然则这些代码多么复杂阿!它包含了初始化办法、线程跟踪列表以及和我一样轻易在逝世锁问题上掉足的人的恶梦——大年夜量的join语句。而这些还仅仅只是繁琐的开端!

    我们今朝为止都完成了什么?根本上什么都没有。膳绫擎的代码几乎一向都只是在进行传递。这是很基本的办法,很轻易掉足(该逝世,我刚才忘了在队列对象上还须要调用task_done()办法(然则蚊粤得修改了)),性价比很低。还好,我们还有更好的办法。

    Map是一个很棒的小功能,同时它也是Python并行代码快速运行的关键。给不熟悉的人讲解一下吧,map是大年夜函数说话Lisp来的。map函数可以或许按序映射出另一个函数。例如

    我们在CPU模式下来完成吧!我工作中就经常须要处理大年夜量的图像文件夹。其义务之一就是创建缩略图。这在并行义务中已经有很成熟的办法了。

    1. urls = ['http://www.yahoo.com'

        推荐阅读

        理解深度学习的钥匙 –启蒙篇

      神经收集是有史以来创造的最优美的编程范式之⼀。在传统的编程⽅法中,我们告诉计算机做什么,把⼤问题分成很多小的、准肯定义的义务,计算机可以很轻易地履行。比拟之>>>详细阅读


      本文标题:Python一行代码完成并行任务

      地址:http://www.17bianji.com/lsqh/34782.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)