gpt4 book ai didi

Python 多处理与 Eventlet

转载 作者:太空狗 更新时间:2023-10-30 01:37:47 24 4
gpt4 key购买 nike

根据我的理解,线程不能并行执行(基于可用性和随机性执行),这就是使用 Eventlet 的原因。

如果 Eventlets 更适合并行性,为什么我们不能只使用 Python 的多处理模块。

我想到了执行多进程模块并使用join方法()来检查是否所有进程都完成了。

谁能解释一下我的理解是否正确?

最佳答案

Based on my understanding, threads cannot be executed in parallel (executed based on availability and random)

正确

and thats the reason Eventlet are being used.

不太正确。 Eventlet 库用于简化非阻塞 IO 编程。它不会实际上增加并行性。由于 GIL,线程执行仍然一次仅限于一个线程。但之所以使用它,是因为它极大地简化了启动、调度和管理 IO 绑定(bind)线程的过程,尤其是那些不需要相互交互的线程。

If Eventlets are more for parallelism

正如我刚才提到的,这不是它们存在的目的。

why can't we just use multiprocessing module of Python. I thought of executing multi process modules and use the join method() to check if all the process are complete.

当然可以!您将通过这种方法获得实际的并行执行。但是您可能无法获得相同的加速。多处理库更适合 CPU 密集型并行任务,因为这些任务需要更频繁地访问解释器。由于多进程执行和管理的开销,在对 IO 绑定(bind)任务使用多处理时,您实际上可能会看到执行时间增加。


与大多数优化和执行时间问题的情况一样,同时尝试和分析是确保您使用“最佳”应用程序选项的可靠方法。虽然您可能会发现,如果您首先编写代码来利用 Eventlet,然后尝试修改它以使用常规线程或多处理,您将不得不编写更多样板代码来管理线程或进程,而 Eventlet 的值(value)应该变得更加明显。

关于Python 多处理与 Eventlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32832056/

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