作家
登录

Python多进程教程

作者: 来源: 2017-06-30 15:02:05 阅读 我要评论

  •     return number * 2 
  •  
  • if __name__ == '__main__'
  •  
  •     numbers = [5, 10, 20] 
  •  
  •     pool = Pool(processes=3) 
  •  
  •     print(pool.map(doubler, numbers)) 
  • 当你这么做了,你应当获得类似下面的输出:

    1. [INFO/Process-1] child process calling self.run() 
    2.  
    3. tango 
    4.  
    5. [INFO/Process-1] process shutting down 
    6.  
    7. [INFO/Process-1] process exiting with exitcode 0 
    8.  
    9. [INFO/Process-2] child process calling self.run() 
    10.  
    11. [INFO/MainProcess] process shutting down 
    12.  
    13. foxtrot 
    14.  
    15. [INFO/Process-2] process shutting down 
    16.  
    17. [INFO/Process-3] child process calling self.run() 
    18.  
    19. [INFO/Process-2] process exiting with exitcode 0 
    20.  
    21. 10 
    22.  
    23. [INFO/MainProcess] calling join() for process Process-3 
    24.  
    25. [INFO/Process-3] process shutting down 
    26.  
    27. [INFO/Process-3] process exiting with exitcode 0 
    28.  
    29. [INFO/MainProcess] calling join() for process Process-2 

    如今如不雅你想要保存日记到硬盘中,那么这件事就显得有些棘手。你能在Python的logging Cookbook浏览一皓有关那类话题。

    Pool类

    Pool类被用来代表一个工作过程池。它有让你将义务转移到工作过程的办法。让我们看下面一个异常简单的例子。

    根本上履行上述代码之后,一个Pool的实例被创建,并且该实例创建了3个工作过程。然后我们应用map 办法将一个函数和一个可迭代对象映射到每个过程。最后我们打印出这个例子的结不雅:[10, 20, 40]。

    你也能经由过程apply_async办法获得池中过程的运行结不雅:

    1. from multiprocessing import Pool 
    2.  
    3. def doubler(number): 
    4.  
    5.     return number * 2 
    6.  
    7. if __name__ == '__main__'
    8.  
    9.     pool = Pool(processes=3) 
    10.  
    11.     result = pool.apply_async(doubler, (25,)) 
    12.  
    13.     print(result.get(timeout=1)) 

    我们膳绫擎做的事实际上就是请求过程的运行结不雅。那就是get函数的用处。它测验测验去获取我们的结不雅。你可以或许留意到我们设置了timeout,这是为了预防我们调用的函数产生异常的情况。毕竟我们不想要它被无穷期地壅塞。

    当碰到过程间通信的情况,multiprocessing 模块供给了两个重要的办法:Queues 和 Pipes。Queue 实现上既是线程安然的也是过程安然的。让我们看一个相当简单的并且基于 Queue的例子。代率攀来自于我的文┞仿(threading articles)。

    1. from multiprocessing import Process, Queue 

        推荐阅读

        马云说智能世界三要素:互联网、大数据、云计算,机器是不可能取代人类的

      我今天不是为不合而不合,我本身认为我们在进入数据时代,一个很重要的事,每小我对每个问题的看法、角度、深度和广度必须是不一样的,只有不一样,你才是你。人工智能,我是这么看的良士>>>详细阅读


      本文标题:Python多进程教程

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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