multiprocessing 方法解析:

 以上是关于进程池的使用,截下来开始介绍如何使用多进程,由于multiprocessing 实现比concurrent.futures 实现更加底层这里还是推荐大家使用concurrent.futures ThreadExecutor ,因为他有更加友好的封装

 最后我要介绍一下进程之间还有一种通信的方式管道pipe:由于线程之间共享全局变量,同步的锁和queue.Queue在多进程里面是无效的

下面我们来看下代码:很明显之前用在thread的queue.Queue()不再适用Process,

那么如何解决Peocess的queue使用呢:那么multiprocessing.Queue()怎么样呢看了下源码发现它好像没有join()和task_done()方法,想想JoinableQueue()是支持的但是,这两个还是不会解决子进程之间无法通信问题:

最后搬出了祖师爷Manager().Queue()试了下发现卡死现象:

原文地址:https://www.cnblogs.com/SunshineKimi/p/12316754.html