파이썬의 기본 세트 타입은 일반적으로 쓰레드 세이프는 아니지만 this 답변은 두 개의 경쟁 쓰레드에서 pop()을 호출하는 것이 안전하다는 답변을 알고 있습니다. 물론 예외가 발생할 수 있지만 데이터가 손상되지는 않습니다. 이 주장을 입증하는 문서를 찾지 못하는 것 같습니다. 사실입니까? 문서, 제발!파이썬에서 set.pop()는 threadsafe입니까?
답변
set.pop
method in the CPython source을 보면 GIL이 해제되지 않는다는 것을 알 수 있습니다.
즉, CPython 프로세스 내에서 한번에 하나만 set.pop
이 발생합니다.
set.pop
checks if the set is empty부터 빈 세트에서 팝업을 시도하여 IndexError
이외의 것을 발생시킬 수 없습니다.
그래서 아니요, CPython을 사용하여 여러 스레드에서 세트를 가져 와서 데이터를 손상시킬 수 없습니다.
직접적인 문제를 해결하기 때문에이 대답을 수락하십시오. fffuuuutttuuurree에서 독자들에게주는주의 사항 : @Niklas (위)의 코멘트를 주목하십시오. –
두 개의 스레드가 같은 값을 낼 수 없다는 의미에서 원자 적으로 인해 "팝"연산이 스레드로부터 안전하다고 믿습니다.
예를 들어 다른 스레드가 해당 컬렉션을 반복하는 경우 해당 동작에 의존하지 않습니다.
구체적인 지침을 찾을 수 없으며이 방향을 가리키는 몇 가지 항목 만 있습니다. 파이썬 공식 문서는 이런 종류의 정보에 실제로 도움이 될 것입니다.
내 대답에있는 소스 링크를 확인하십시오. CPython에서'set.next'와'set.pop'는 동시에 일어나지 않을 수 있습니다. 그래서 일어날 수있는 최악의 상황은'it 'loop - 항목을 건너 뜁니다. – agf
- 1. Generators Threadsafe입니까?
- 2. std :: vectors는 threadsafe입니까?
- 3. Java : ServerSocket.accept는 threadsafe입니까?
- 4. iPhone - ASIHTTPRequest는 threadsafe입니까?
- 5. 은 with_scope threadsafe입니까?
- 6. SynchronizationContext.Post()는 threadsafe입니까?
- 7. boost :: interprocess threadsafe입니까?
- 8. Thread.getStackTrace()는 threadsafe입니까?
- 9. . LinkedList 구현은 .Net threadsafe입니까?
- 10. random_shuffle은 threadsafe입니까? 그렇지 않은 경우 rand_r을 사용하십시오.
- 11. jsp PageContext 객체의 수명주기는 무엇입니까? threadsafe입니까?
- 12. 메모리 내 이벤트 소싱 알고리즘 - 맞습니까? 그것은 threadsafe입니까?
- 13. 멀티 코어 MacOSX에서 다음과 같은 C++ 코드는 threadsafe입니까?
- 14. , " '"파이썬에서
- 15. 파이썬에서
- 16. 파이썬에서
- 17. 파이썬에서
- 18. 파이썬에서
- 19. 파이썬에서
- 20. 는 파이썬에서 문자열과 정수을 연결 파이썬에서
- 21. 개행은 파이썬에서 어디에서 왔습니까? 내가 파이썬에서
- 22. 파이썬에서 비동기 오버플로를 보내고받는 중입니다. 파이썬에서 파이프()
- 23. 파이썬에서 gettext -
- 24. 는 파이썬에서
- 25. ** 빨리 ** ** 파이썬에서
- 26. 파이썬에서 병합하기
- 27. + 파이썬에서 \ 연산자
- 28. 히스토그램 (파이썬에서)
- 29. 파이썬에서 스레딩
- 30. 파이썬에서 스레딩
파이썬 소스 코드를 살펴보면,'set' 객체는 몇 가지 편리한 방법으로 된 사전입니다. – Blender
나는 [당신이 찾고있는 대답] (http://stackoverflow.com/a/2227210/1132524)이 당신이 지적한 것의 아래에 있다고 생각합니다. 댓글을 읽고 [GIL] (http://wiki.python.org/moin/GlobalInterpreterLock)이 무엇인지 확인하십시오. –
당신이 링크하는 동일한 질문은 mutable 타입은 thread-safe가 아니라고 말합니다 : http://stackoverflow.com/a/2227220/104847 당신은 경합 조건이 없도록 잠금 메커니즘을 구현해야합니다. – Ale