Warning: count(): Parameter must be an array or an object that implements Countable in /customers/2/7/7/fairbar.dk/httpd.www/wp-includes/post-template.php on line 284

파이썬 멀티스레드 예제

By 2. augustIkke-kategoriseret

기본 잠금은 잠겨 있을 때 특정 스레드가 소유하지 않는 동기화 기본 입니다. 파이썬에서는 현재 _thread 확장 모듈에서 직접 구현한 가장 낮은 수준의 동기화 프리미티브입니다. 체크 아웃 – 이 파이썬 스레딩 예제에서 7 개의 최고의 온라인 파이썬 인터프리터, 우리는 single.py 대체할 새로운 모듈을 작성합니다. 이 모듈은 8개의 스레드풀을 생성하여 주 스레드를 포함하여 총 9개의 스레드를 만듭니다. 내 컴퓨터에 8 개의 CPU 코어와 코어 당 하나의 작업자 스레드가 한 번에 실행되는 스레드 수에 대한 좋은 숫자를 보였기 때문에 8 개의 작업자 스레드를 선택했습니다. 실제로 이 숫자는 동일한 컴퓨터에서 실행되는 다른 응용 프로그램 및 서비스와 같은 다른 요인에 따라 훨씬 더 신중하게 선택됩니다. 이전 예제의 __main__ 코드에 가깝기 때문에 상당히 익숙해 보입니다. 이전 예제의 코드에 대한 유일한 변경 사항은 Lock에 대한 RLock을 대체하는 것이었습니다. 우리가 스레딩 모듈을 사용하여 간단한 예를 생각해 보자 : 우리는 당신이 매우 흥미롭고 포로이 파이썬 멀티 스레딩 자습서를 찾을 수 있기를 바랍니다. 여기에서 찾은 그림은 파이썬 기술을 고양시키는 데 분명히 도움이 될 것입니다.

파이썬 스레딩의 소스를 보면 스레딩._shutdown()이 실행중인 모든 스레드를 통과하고 데몬 플래그가 설정되지 않은 모든 스레드에서 .join()를 호출하는 것을 볼 수 있습니다. 사실상 참조 파이썬 구현-CPython-GIL, 이것은 모든 파이썬 구현의 사실이 아니다. 예를 들어 .NET 프레임워크를 사용하는 파이썬 구현인 IronPython에는 GIL이 없으며 Java 기반 구현인 Jython도 없습니다. 여기에서 파이썬 구현 의 작업 목록을 찾을 수 있습니다. 파이썬 스레딩 모듈은 프로세스 대신 스레드를 사용합니다. 스레드는 동일한 고유한 메모리 힙에서 실행됩니다. 프로세스는 별도의 메모리 힙에서 실행되는 반면. 이렇게 하면 프로세스 및 개체 인스턴스와 정보 공유가 더 어려워집니다. 스레드가 동일한 메모리 힙을 사용하기 때문에 한 가지 문제가 발생하므로 여러 스레드가 메모리 힙에서 동일한 위치에 쓸 수 있으므로 기본 Python 인터프리터에는 스레드 안전 메커니즘인 “GIL”(전역 인터프리터 잠금)이 있습니다. 이렇게 하면 한 번에 하나의 문(직렬 처리 또는 단일 스레딩)만 실행하여 스레드 간의 충돌을 방지할 수 있습니다. 예를 들어 클라이언트와 서버 스레드를 동기화하는 간단한 방법은 다음과 같습니다.

그러나 Java가 잠금을 만들고 조건 변수가 모든 개체의 기본 동작을 만드는 경우 Python의 개별 개체입니다. 파이썬의 스레드 클래스는 Java Thread 클래스의 동작하위 집합을 지원합니다. 현재는 우선 순위가 없으며 스레드 그룹이 없으며 스레드를 삭제, 중지, 일시 중단, 다시 시작 또는 중단할 수 없습니다. Java Thread 클래스의 정적 메서드는 구현될 때 모듈 수준 함수에 매핑됩니다. 이전 사용 된 동일한 컴퓨터에서이 파이썬 스레딩 예제 스크립트를 실행하면 다운로드 시간이 4.1 초입니다! 이는 이전 예제보다 4.7배 빠릅니다. 훨씬 빠르지만 GIL로 인해 이 프로세스 전체에서 한 번에 하나의 스레드만 실행되고 있음을 언급할 필요가 있습니다.

leder

Author leder

More posts by leder