我发现在Python3.4中,用于多处理/线程的库很少:multiprocessingvsthreadingvsasyncio.
但我不知道该用哪一个,或者是"推荐的".他们做的是同一件事,还是不同?如果是,哪一个用于什么?我想写一个在我的计算机中使用多核的程序.但我不知道该go 哪个图书馆.
我发现在Python3.4中,用于多处理/线程的库很少:multiprocessingvsthreadingvsasyncio.
但我不知道该用哪一个,或者是"推荐的".他们做的是同一件事,还是不同?如果是,哪一个用于什么?我想写一个在我的计算机中使用多核的程序.但我不知道该go 哪个图书馆.
它们用于(略微)不同的目的和/或要求.CPython(一个典型的主线Python实现)仍然有global interpreter lock个线程,因此多线程应用程序(现在实现并行处理的标准方式)是次优的.这就是为什么multiprocessing
-may比threading
更受欢迎.但并不是每个问题都可以有效地分割成[几乎独立的]部分,因此可能需要大量的进程间通信.这就是为什么multiprocessing
通常不比threading
好.
asyncio
(这种技术不仅在Python中可用,其他语言和/或框架也有,例如Boost.ASIO)是一种有效处理来自多个同时源的大量I/O操作的方法,而不需要并行代码执行.所以这只是一个解决方案(确实是一个很好的解决方案!)用于特定任务,而不是一般的并行处理.