2016-12-21 2 views
-1

초보자를위한 파이썬 및 다중 스레드.Python에서 I/O 차단

차단 및 비 차단 I/O에 대한 몇 가지 기사를 읽었으며 주요 차이점은 I/O 차단으로 인해 작업이 순차적으로 실행되도록 허용하는 반면 비 차단 I/O에서는 허용되는 동시에 여러 작업을 실행할 수 있습니다.

그렇다면 I/O 작업을 차단하는 방법 (일부 Python 표준 기본 제공 함수)이 다중 스레드를 수행하는 방법은 무엇입니까?

답변

2

I/O 차단은 전체 프로세스가 아니라 실행중인 스레드를 차단합니다. (최소한이 컨텍스트와 표준 PC에서)

멀티 스레딩은 정의의 영향을받지 않습니다. 현재 스레드 만 차단됩니다.

1

글로벌 인터프리터 잠금 (cpython에서)은 한 번에 하나의 활성 파이썬 스레드 만 실행되도록 측정 값을 저장합니다. 이것은 통역관의 부패를 피하기 위해 설치되었습니다.

차단 작업이 발생하면 현재 스레드가 잠금을 생성하므로 첫 번째 스레드가 차단되는 동안 다른 스레드가 실행될 수 있습니다. 그러나 CPU 바운드 스레드 (순수하게 파이썬 호출이 이루어진 경우)는 실행중인 스레드의 수에 상관없이 하나의 스레드 만 실행합니다.

파이썬 3.2에서 코드가 추가되어 글로벌 통역사 잠금. 또한 파이썬의 다른 구현에는 전역 인터프리터 잠금이 없다는 점에 흥미로운 점이 있습니다.

관련 문제