当你这么做了,你应当获得类似下面的输出:
- [INFO/Process-1] child process calling self.run()
- tango
- [INFO/Process-1] process shutting down
- [INFO/Process-1] process exiting with exitcode 0
- [INFO/Process-2] child process calling self.run()
- [INFO/MainProcess] process shutting down
- foxtrot
- [INFO/Process-2] process shutting down
- [INFO/Process-3] child process calling self.run()
- [INFO/Process-2] process exiting with exitcode 0
- 10
- [INFO/MainProcess] calling join() for process Process-3
- [INFO/Process-3] process shutting down
- [INFO/Process-3] process exiting with exitcode 0
- [INFO/MainProcess] calling join() for process Process-2
如今如不雅你想要保存日记到硬盘中,那么这件事就显得有些棘手。你能在Python的logging Cookbook浏览一皓有关那类话题。
Pool类
Pool类被用来代表一个工作过程池。它有让你将义务转移到工作过程的办法。让我们看下面一个异常简单的例子。
根本上履行上述代码之后,一个Pool的实例被创建,并且该实例创建了3个工作过程。然后我们应用map 办法将一个函数和一个可迭代对象映射到每个过程。最后我们打印出这个例子的结不雅:[10, 20, 40]。
你也能经由过程apply_async办法获得池中过程的运行结不雅:
- from multiprocessing import Pool
- def doubler(number):
- return number * 2
- if __name__ == '__main__':
- pool = Pool(processes=3)
- result = pool.apply_async(doubler, (25,))
- print(result.get(timeout=1))
我们膳绫擎做的事实际上就是请求过程的运行结不雅。那就是get函数的用处。它测验测验去获取我们的结不雅。你可以或许留意到我们设置了timeout,这是为了预防我们调用的函数产生异常的情况。毕竟我们不想要它被无穷期地壅塞。
当碰到过程间通信的情况,multiprocessing 模块供给了两个重要的办法:Queues 和 Pipes。Queue 实现上既是线程安然的也是过程安然的。让我们看一个相当简单的并且基于 Queue的例子。代率攀来自于我的文┞仿(threading articles)。
- from multiprocessing import Process, Queue
推荐阅读
马云说智能世界三要素:互联网、大数据、云计算,机器是不可能取代人类的
我今天不是为不合而不合,我本身认为我们在进入数据时代,一个很重要的事,每小我对每个问题的看法、角度、深度和广度必须是不一样的,只有不一样,你才是你。人工智能,我是这么看的良士>>>详细阅读
本文标题:Python多进程教程
地址:http://www.17bianji.com/lsqh/35977.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示