Python 并发编程:进程线程篇

Python 提供了 threading 和 multiprocessing 用于编写多线程/多进程程序。

如果你不需要在多个进程/线程之间传递数据,那么 Python 的并发编程可以说是很简单。
但是一旦需要在异步任务间通信,问题就变得复杂了。

对于多线程,我们需要使用各种同步机制来确保对共享变量的修改是顺序进行的。
对于多进程,我们需要使用管道/队列来通信。

用线程还是用进程?

有时候我们无法确定一个任务是 IO 密集型还是计算密集型,也就无法确定该使用线程还是进程,这时 multiprocessing.dummy 帮我们解决了这个选择困难症。

multiprocessing.dummy 的 API 完全等同于 multiprocessing 包, 但是它实际上是一个 threading 库的封装。(也就是说是多线程的)

如果一个功能你不确定用多进程还是多线程,那就用 multiprocessing 的 API 写,然后用 dummy 的多线程和原生的多进程比较,哪个快就用哪个。这样需要改的只是一个导包语句。

参考

猜你喜欢

转载自www.cnblogs.com/kirito-c/p/10299670.html
今日推荐