4

首先,将eventlet或gevent等绿色线程与标准库中的python原生线程(即Lib/threading.py)混合在同一个python进程中是否安全?

其次,如果它是安全的,这是一个坏主意吗?

4

2 回答 2

6

使用gevent < 1.0它很可能是一个坏主意,因为libevent它不是线程安全的。如果您确保操作系统线程永远不会与之交互,您可能会没事libevent……但这可能会很棘手,并且libevent由于缺乏线程安全性而导致的错误听起来对调试没有任何乐趣。

但是,gevent >= 1.0useslibev是完全线程安全的。所以(据我所知)混合绿色线程和操作系统线程没有问题。

于 2012-06-12T06:45:40.907 回答
-2

gevent 为线程提供猴子修补功能

Greenlets 只在一个线程内相互切换,因此一个线程的 greenlets 将与另一个线程完全分离且互不联系。

在你证明你有性能需要之前,我不建议使用多线程的 greenlets。

于 2012-03-11T16:58:19.240 回答