まず、eventlet や gevent などのグリーン スレッドを、標準ライブラリの python ネイティブ スレッド、つまり Lib/threading.py を同じ python プロセスに混在させても安全ですか?
第二に、もしそれが安全なら、それは悪い考えですか?
まず、eventlet や gevent などのグリーン スレッドを、標準ライブラリの python ネイティブ スレッド、つまり Lib/threading.py を同じ python プロセスに混在させても安全ですか?
第二に、もしそれが安全なら、それは悪い考えですか?
スレッドセーフではないため、これgevent < 1.0
はおそらく悪い考えです。libevent
OS スレッドが決して対話しないようにすれば問題ないかもしれませんが、libevent
それは難しいかもしれません。またlibevent
、スレッド セーフの欠如によって引き起こされるバグは、デバッグするのが楽しいとは思えません。
ただし、完全にスレッドセーフな をgevent >= 1.0
使用します。libev
したがって、(私が知る限り) グリーン スレッドと OS スレッドを混在させても問題はありません。
gevent は、スレッドのモンキー パッチ機能を提供します。
Greenlet は 1 つのスレッド内でのみ相互に切り替わるため、1 つのスレッドの greenlet は完全に分離され、別のスレッドとは通信できなくなります。
パフォーマンスの必要性があることを示すまで、グリーンレットの複数のスレッドを使用することはお勧めしません。