python多进程apply与apply_async的区别

Posted 心脏咚个不停

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python多进程apply与apply_async的区别相关的知识,希望对你有一定的参考价值。

为什么会这样呢?

因为进程的切换是操作系统来控制的,抢占式的切换模式。
我们首先运行的是主进程,cpu运行很快啊,这短短的几行代码,完全没有给操作系统进程切换的机会,主进程就运行完毕了,整个程序结束。子进程完全没有机会切换到程序就已经结束了。

apply是阻塞式的。

首先主进程开始运行,碰到子进程,操作系统切换到子进程,等待子进程运行结束后,在切换到另外一个子进程,直到所有子进程运行完毕。然后在切换到主进程,运行剩余的部分。

apply_async是异步非阻塞式的。

首先主进程开始运行,碰到子进程后,主进程说:让我先运行个够,等到操作系统进行进程切换的时候,在交给子进程运行。以为我们的程序太短,然而还没等到操作系统进行进程切换,主进程就运行完毕了。

想要子进程执行,就告诉主进程:你等着所有子进程执行完毕后,在运行剩余部分。

注意:close必须在join前调用。

作者:有点d伤
链接:https://www.jianshu.com/p/0a55507f9d9e
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。






以上是关于python多进程apply与apply_async的区别的主要内容,如果未能解决你的问题,请参考以下文章

python multiprocessing.pool.apply_async 占用内存多 解决方法

多进程池中的 apply_async 问题

Python 多进程池

python多进程之Pool

python 多进程的使用demo

python多进程,并获取每个进程的返回值