파이썬에서 ASCII 데이터를 공유하는 세 개의 스레드가 있습니다. 첫 번째 스레드는 매우 빠른 속도로 직렬 포트에서 직렬 데이터를 읽습니다. 그런 다음 필자는이 데이터를 파싱하여 작성한 소켓으로 전달합니다. 또한 직렬 데이터의 일부 데이터는 XML 파일에 기록됩니다. 글로벌 통역사 잠금 장치와 그 한계에 대해 알고 있습니다. 나는 1/10 초 이내에 이러한 모든 작업을 수행해야합니다. 스레드간에 공유하는 전역 값을 사용하여 많은 양의 CPU 사용량과 지연이 발생합니다. 나는 다른 languishes들과 마찬가지로 파이썬에서 이벤트를 사용할 수 있다고 생각하지 않는다.데이터 스레드간에 데이터를 전달하는 방법은 무엇입니까?
파이썬에서 지연과 CPU 사용없이 동기식으로 이러한 스레드간에 데이터를 공유하려면 어떻게합니까? https://docs.python.org/2/library/queue.html
큐는 기본적으로 목록입니다 그러나 그들은 스레드 안전하고 '가져 오기'기능을 효율적으로 일부 때까지 스레드를 차단 :
감사합니다. 나는 앞서 사용했던 전역 변수를 최대 크기가 1 인 스레딩 FIFO 대기열로 변환했습니다. 따라서 스레드 안전 환경에서 한 번에 하나의 항목 만 전달할 수있었습니다. 또한, 너무 빨리 실행되는 다른 스레드가있었습니다. 그래서 속도를 늦추고 CPU 사용량을 줄이기 위해 시간에 민감한 스레드의 대기열을 사용했습니다. 그렇지 않으면 GIL이 정말 내 CPU에 혼란을 가져올 것입니다. – Speakeasys