Python 프로그램에서 eventlet을 사용하여 greenthreads를 많이 만들고, 현재 greenthread가 잠자기 상태인지 여부를 알고 싶습니다. 나머지 중 어느 것이 예약되고 실행됩니까? 이벤트 릿의 모든 스케줄러?greenthread는 어떻게 예약됩니까?
감사합니다. 하나를 실행하려고하는 두 greenthreads 준비 필요,
Python 프로그램에서 eventlet을 사용하여 greenthreads를 많이 만들고, 현재 greenthread가 잠자기 상태인지 여부를 알고 싶습니다. 나머지 중 어느 것이 예약되고 실행됩니까? 이벤트 릿의 모든 스케줄러?greenthread는 어떻게 예약됩니까?
감사합니다. 하나를 실행하려고하는 두 greenthreads 준비 필요,
이 링크를 시청하시기 바랍니다 말하기 일반적으로 greenthreadlink2
읽기는 정의되지 않습니다. 매번 무작위로 선택한 것처럼 프로그램을 작성해야합니다.
구현 세부 사항은 FIFO 의미론이있는 큐 스케줄러가 있다는 것입니다. 그러나 시간 (> 0 초)을 기다리거나 파일 설명자 (네트워크 포함)를 기다리는 것이 조금 더 복잡해집니다.
아, 그리고 우리는 https://github.com/eventlet/eventlet
greenthread가 실행될 예정인 경우 정의되지 않은 것입니다. 그러면 복잡한 프로그래밍 패턴과 같은 OS 스레드와 비슷한 유사한 단점을 가지며 교착 상태가 발생할 수 있다고 생각합니다. 따라서 OS 스레드와 비교할 때 이점 내가 greenthread에서 얻을 수있는 유일한 "경량"과 적은 오버 헤드를 전환 할 수 있습니까? 그러나 OS 스레드를 사용하면 greenthread로는 달성 할 수없는 하나의 Python 프로그램에서 다중 CPU 코어를 완전히 활용할 수 있습니다. – Eric
또 다른 질문은 greenthread A에서 eventlet.sleep (5)를 호출하여 다른 greenthreads에 대한 실행을 포기할 때 eventlet을 greensread A가 5 초 후에 다시 스케줄 할 수있는 방법은 무엇입니까? – Eric
@Eric : "하나의 Python 프로그램에서 다중 CPU 코어를 완전히 활용할 수 있습니다."- [Nope] (http://stackoverflow.com/questions/1294382/what-is-a-global-interpreter-lock-gil), 죄송합니다. – Kevin
당신이 당신의 코드를 추가 할 수 있습니다 여기에 공식 Github의 저장소가? – user00000341