هل من الآمن مزج الخيوط الخضراء والخيوط الأصلية في عملية بيثون واحدة؟

StackOverflow https://stackoverflow.com//questions/9639466

سؤال

أولا، هل من الآمن مزج الخيوط الخضراء مثل EventLet أو Gevent مع مؤشرات الترابط الأصلية Python من المكتبة القياسية، أي Lib / Tibing.py في نفس عملية بيثون؟

ثانيا، إذا كانت آمنة، هل هي فكرة سيئة؟

هل كانت مفيدة؟

المحلول

With gevent < 1.0 it is most likely a bad idea, as libevent isn't thread safe. You might be okay if you make sure that the OS threads never interact with libevent… But that could be tricky, and bugs cause by libevent's lack of thread safety don't sound like any fun to debug.

However, gevent >= 1.0 uses libev, which is entirely thread safe. So (as far as I can tell) there's no problem mixing green threads and OS threads.

نصائح أخرى

gevent provides monkey patching abilities for threads.

Greenlets only switch to eachother within one thread, so one thread's greenlets will be completely separate and incommunicado from another's.

I wouldn't suggest using multiple threads of greenlets until you've shown you have a performance need to do so.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top