나는 이것을 명확하게하는 데 어려움을 겪고있다.파이썬 GIL은 멀티 스레딩에서 어떤 한계점을 가지고 있습니까? (예를 들면)
내가 세 개의 스레드 프로그램 말하자면, 본 -을, B와 C
C는 '하드웨어 관리자', A와 B는 스케줄링과 루틴의 일환으로 APScheduler을 사용하여 자신의 작업을 수행 할 수있다 , 하드웨어 관리자 스레드의 요청을합니다.
스레드 C에서 time.Sleep()을 사용하면 (일부 하드웨어 관련 작업을 완료하기 위해 대기해야하는 경우가 있음) 스레드 C의 다른 메소드를 호출 할 수 있습니까?
예 : 'A'는 'C'가 모뎀에 전원을 공급하는 릴레이를 켜도록 요청합니다. 이 메서드는 sleep()을 통합하므로 반환하면 'A'는 네트워크 연결이 존재할 것으로 기대할 수 있습니다. 그러나이 시간 동안 'B'는 ADC에서 배터리 전압 판독 값을 요청할 수 있습니다. 'B'가 첫 번째 메서드 호출이 반환 될 때까지 기다리지 않아야합니까?
귀하의 질문은 GIL과 관련이 없습니다. 스레드 C는 실행 중이 지 않고 잠자기 상태입니다. 여기에도 스레드와 객체가 혼합되어 있습니다. 스레드 또는 하드웨어 관리자입니까? 후자는 스레드를 사용하여 작업을 수행 할 수 있지만 두 작업은 동일하지 않습니다. –
GIL에 대한 정보는 [Python이 멀티 스레딩을 지원합니까?] (http://stackoverflow.com/q/20939299)를 참조하십시오. 'time.sleep()'는 다른 쓰레드를 만든다. –
이러한 개체 (A, B 및 C) 각각은 threading.Thread의 하위 클래스로 정의됩니다. 실제로 C는 둘 다 있습니다. – BugSpray