gpt4 book ai didi

python - Python 3 中的多处理、多线程和异步

转载 作者:IT老高 更新时间:2023-10-28 20:21:46 25 4
gpt4 key购买 nike

我发现在 Python 3.4 中有几个不同的多处理/线程库:multiprocessing对比 threading对比 asyncio .

但我不知道该使用哪一个或者是“推荐的”。他们做同样的事情,还是不同?如果是这样,哪一个用于什么?我想在我的计算机上编写一个使用多核的程序。但是不知道该学哪个库。

最佳答案

TL;DR

做出正确的选择:

We have walked through the most popular forms of concurrency. But the question remains - when should choose which one? It really depends on the use cases. From my experience (and reading), I tend to follow this pseudo code:

if io_bound:
if io_very_slow:
print("Use Asyncio")
else:
print("Use Threads")
else:
print("Multi Processing")
  • CPU Bound => Multi Processing
  • I/O Bound, Fast I/O, Limited Number of Connections => Multi Threading
  • I/O Bound, Slow I/O, Many connections => Asyncio

Reference


[注意]:

  • 如果你有一个长调用方法(例如一个包含休眠时间或惰性 I/O 的方法),最好的选择是 asyncio , TwistedTornado方法(协程方法),它使用单个线程作为并发。
  • asyncio适用于 Python3.4 及更高版本。
  • TornadoTwistedPython2.7
  • 开始准备就绪
  • uvloop是超快的 asyncio 事件循环(uvloop 使 asyncio 快 2-4 倍)。

[更新(2019)]:

  • Japlanto ( GitHub ) 是一个非常快速的基于 uvloop 的流水线 HTTP 服务器。 .

关于python - Python 3 中的多处理、多线程和异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com