我发现在 Python 3.4 中,用于多处理/线程的库很少:multiprocessing vs threading vs asyncio。
但我不知道使用哪一个或者是“推荐的”。他们做同样的事情,还是不同?如果是这样,哪一个用于什么?我想在我的计算机上编写一个使用多核的程序。但我不知道我应该学习哪个库。
它们用于(略微)不同的目的和/或要求。CPython(一种典型的主流 Python 实现)仍然具有全局解释器锁,因此多线程应用程序(当今实现并行处理的标准方法)不是最理想的。这就是为什么multiprocessing 可能 优先于threading. 但并不是每个问题都可以有效地分解为[几乎独立的]部分,因此可能需要繁重的进程间通信。这就是为什么在一般multiprocessing情况下可能不受欢迎的原因。threading
multiprocessing
threading
asyncio(这种技术不仅在 Python 中可用,其他语言和/或框架也有,例如Boost.ASIO)是一种有效处理来自许多同时源的大量 I/O 操作而无需并行代码执行的方法. 因此,它只是针对特定任务的解决方案(确实是一个很好的解决方案!),而不是一般的并行处理。
asyncio