Comunidad Empresarial Dinamiza

 
 
  • No hay categorías

 
No te pierdas...
 

 
Publicado 02/08/2019 por admin en
 
 

python multithreading 예제

코드가 IO 바인딩된 경우 파이썬의 멀티 프로세싱과 멀티 스레딩이 모두 작동합니다. 다중 처리는 스레딩보다 쉽게 드롭할 수 있지만 메모리 오버헤드가 더 큽니다. 코드가 CPU 에 바인딩된 경우, 특히 대상 컴퓨터에 여러 코어 또는 CPU가 있는 경우 멀티프로세싱이 더 나은 선택이 될 가능성이 높습니다. 웹 응용 프로그램의 경우 여러 컴퓨터에서 작업을 확장해야 하는 경우 RQ가 더 나은 것입니다. 이것은 우리가 이제 파이썬 스레드 클래스의 후손인 새로운 클래스 인 DownloadWorker를 가지고 있다는 것을 제외하고는 이전 클래스와 거의 동일합니다. 무한 루프를 실행하는 실행 메서드가 재정의되었습니다. 모든 반복에서 self.queue.get()을 호출하여 스레드로부터 URL을 가져오려고 합니다. 작업자가 처리할 큐에 항목이 있을 때까지 차단합니다. 작업자가 큐에서 항목을 받으면 이전 스크립트에서 사용된 것과 동일한 download_link 메서드를 호출하여 이미지 디렉터리로 이미지를 다운로드합니다.

다운로드가 완료되면 작업자는 해당 작업이 완료된 큐에 신호를 보신습니다. 이는 큐가 큐에 대기된 작업 수를 추적하기 때문에 매우 중요합니다. queue.join()에 대한 호출은 작업자가 작업을 완료했다는 신호를 받지 않은 경우 주 스레드를 영원히 차단합니다. REPL 예제에서는 Python 표준 라이브러리의 dis를 사용하여 프로세서가 함수를 구현하기 위해 수행하는 작은 단계를 보여 줍니다. 데이터 값 x의 LOAD_FAST를 수행하고 LOAD_CONST 1을 수행한 다음 INPLACE_ADD를 사용하여 해당 값을 함께 추가합니다. 파이썬 스레딩은 데몬에 대해 보다 구체적인 의미를 가합니다. 프로그램이 종료되면 데몬 스레드가 즉시 종료됩니다. 이러한 정의에 대해 생각하는 한 가지 방법은 데몬 스레드를 종료할 염려 없이 백그라운드에서 실행되는 스레드로 간주하는 것입니다. 그러나 프로그래밍 기술을 향상시키기 위해 다양한 파이썬 연습을 할 수도 있습니다. 우리는 당신이 파이썬 멀티 스레딩 튜토리얼이 매우 흥미롭고 포로를 찾을 수 있기를 바랍니다. 여기에서 찾은 그림은 파이썬 기술을 고양시키는 데 분명히 도움이 될 것입니다. Python 2.4에 포함된 최신 스레딩 모듈은 이전 섹션에서 설명한 스레드 모듈보다 훨씬 더 강력하고 높은 수준의 스레드 지원을 제공합니다.

스레딩은 파이썬 동시성 및 병렬처리에 가장 잘 알려진 방법 중 하나입니다. 스레딩은 일반적으로 운영 체제에서 제공하는 기능입니다. 스레드는 프로세스보다 가볍고 동일한 메모리 공간을 공유합니다. 디자인 문제는 일부 언어에서 약간 까다로워질 수 있습니다. 고맙게도 파이썬 스레딩에는 RLock이라는 두 번째 개체가 있습니다. 스레드가 .release()를 호출하기 전에 RLock을 여러 번 .acquire() 할 수 있습니다. 해당 스레드는 여전히 .release() 호출하는 데 필요합니다 .acquire()라고 하는 동일한 횟수이지만 어쨌든 그렇게 해야 합니다.


admin