파이썬에서 동기화 된 집합 클래스가 있습니까? Queue.Queue
처럼? 나는 JMS 큐에 메시지를 보내고 reciepts을 처리 할 필요 해요 : 세트가있는 경우파이썬에서 동기화 된 집합
- 를 영수증이 수신 세트
- 에 보낸 메시지를 추적, 세트
- 에서 삭제 비어 있음, 이벤트 설정
Queue
과 동일한 인터페이스를 사용하는 것이 좋지만 어떤 순서로든 제거 할 수 있어야합니다.
파이썬에서 동기화 된 집합 클래스가 있습니까? Queue.Queue
처럼? 나는 JMS 큐에 메시지를 보내고 reciepts을 처리 할 필요 해요 : 세트가있는 경우파이썬에서 동기화 된 집합
Queue
과 동일한 인터페이스를 사용하는 것이 좋지만 어떤 순서로든 제거 할 수 있어야합니다.
개체 잠금을 찾으십시오. http://docs.python.org/library/threading.html
기본적으로 개체를 기반으로 스레드의 실행을 잠급니다. 객체에 대한 작업이 끝나면 객체를 놓고 스레드가 계속됩니다.
우물 Queue.Queue 후드 (and deque is not thread safe) 아래에 deque을 사용하십시오.
그럼 Queue.Queue 클래스를 확장하고 새 메서드를 추가하면 deque 메서드 deque.remove() (어떤 순서로도 요소를 제거한다는 의미 일 경우)을 호출 할 수 있습니다. 귀하의 새로운 방법은 스레드 안전합니다 Queue.Queue.put() 방법을보고해야 할 일의 예를 참조하십시오.
글쎄 그것은 약간 위험하고 레이스 컨디션 문제는 당신이 무언가를 놓치면 디버그하기가 매우 어렵지만 명확한 시각을 줄 수 있기를 바랍니다.
집합 연산은 (GIL 때문에) 원자 적입니다. 그러나 "집합이 비어 있고 이벤트를 설정했는지 확인"하는 원자 단위는 없습니다. –