gpt4 book ai didi

python - Gevent可以和CPython中的真实线程结合使用吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:27:31 32 4
gpt4 key购买 nike

只是想知道 gevent coro-thread 是否可以与真正的线程一起工作?也许我可以编写一个包含多个线程的程序,并且每个线程中都有一些协程?

已编辑

gevent.Threading 和 CPython 线程都有其缺点。协程无法利用多个 CPU,而 CPython 线程在线程数较大时会受到 GIL 的限制。我也在研究类似于 bluelet 的纯 Python 协程实现(尽管开销可能比 gevent 大),以添加同时使用 coro 和线程的能力。

我只是想知道 gevent 或 greenlet( https://pypi.python.org/pypi/greenlet ) 是否可以通过 CPython 线程实现 coop 能力。

最佳答案

Gevent 1.0 应该支持每个线程有一个 Gevent 主循环,如果那是你的意思的话。

此外,gevent.threadpool 允许以 gevent 兼容的方式在真实线程中运行任务:

threadpool = gevent.threadpool.ThreadPool()
result = threadpool.spawn(some_non_gevent_friendly_thing_such_as_file_io)

result.get() # or use ThreadPool.apply/apply_e to get the result value immediately

您将通过查看 https://github.com/gevent/gevent/blob/master/src/gevent/threadpool.py 找到有关 gevent.threadpool 的更多信息(或者一旦 1.0 的文档以发布/HTML 形式可用时的文档)。

关于python - Gevent可以和CPython中的真实线程结合使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811982/

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