첫째, eventlet 또는 gevent 같은 녹색 스레드를 파이썬 기본 스레드 (예 : 동일한 파이썬 프로세스의 Lib/threading.py)와 혼합하는 것이 안전합니까?단일 파이썬 프로세스에서 녹색 스레드와 원시 스레드를 혼합하는 것이 안전합니까?
둘째, 안전하다면 나쁜 생각입니까?
첫째, eventlet 또는 gevent 같은 녹색 스레드를 파이썬 기본 스레드 (예 : 동일한 파이썬 프로세스의 Lib/threading.py)와 혼합하는 것이 안전합니까?단일 파이썬 프로세스에서 녹색 스레드와 원시 스레드를 혼합하는 것이 안전합니까?
둘째, 안전하다면 나쁜 생각입니까?
gevent < 1.0
은 libevent
이 스레드로부터 안전하지 않기 때문에 가장 좋은 방법 일 수 있습니다. OS 스레드가 절대로 libevent
과 상호 작용하지 않는다는 것을 확신한다면 괜찮을 것입니다. 그러나 이것은 까다로울 수 있으며, libevent
의 스레드 안전성 부족으로 인해 디버그가 재미 있지는 않습니다.
그러나 gevent >= 1.0
은 전체적으로 스레드 안전 인 libev
을 사용합니다. 그래서 (내가 말할 수있는 한) 녹색 스레드와 OS 스레드를 혼합해도 아무런 문제가 없습니다.
gevent는 스레드에 대해 monkey patching abilities을 제공합니다.
글 머리 기호는 하나의 스레드 내에서만 서로 전환되므로 하나의 스레드의 그린렛은 다른 글 머리 기호와 완전히 별개이며 다른 글 머리 기호와 통신 할 수 없습니다.
퍼포먼스가 필요하다는 것을 알기 전까지는 여러 개의 greenlets 스레드를 사용하지 않는 것이 좋습니다.
좋은 생각이 아닌 이유에 대한 설명이 여기에없는 것 같습니다. –
@ NiklasB. 멀티 스레딩은 항상 혼란과 추적하기 어려운 버그의 원인 일 수 있습니다. 그래서 당신이 멀티 스레딩에서 아무것도 얻지 못한다면 (또는 아주 적게), 더 잘 피하십시오. – sloth
녹색 스레드를 사용하는 경우 왜 네이티브 스레드가 필요합니까? – Seth