2013-06-08 12 views
1

필자가 아는 한, 파이썬에서 멀티 코어 환경에서 일반 스레딩을 사용하면 GIL은 일반적으로 성능에 영향을 미치고 부정적인 방법 (스레드가 GIL을 지속적으로 획득 및 릴리스하고 스레드/프로세서간에 많은 컨텍스트 전환을 시도하기 때문에).내 파이썬 응용 프로그램을 멀티 코어에서 병렬로 작동하도록 설계하는 방법

많은 사람들이 녹색 줄을 사용하기 시작했습니다. 이벤트 릿. 이벤트 릿 라이브러리를 사용하면 여러 개의 녹색 스레드가 협력하여 작업 할 수 있으며 단일 프로세서에서 완벽하게 작동합니다 (동기화 문제가 적고 신속한 스폰/효율성 등).

제 질문은 멀티 코어 OS가 있고 파이썬 응용 프로그램을 설계한다면 협업 스레딩 (녹색 스레드)과 멀티 코어 프로세서의 장점을 모두 따라야하는 모범 사례 또는 설계 패턴이 무엇인지입니다. .

+2

죽은 간단한 : IO 결합 == 스레드 CPU 결합 == 프로세스. 또한 Python 3.2 이상의 스레드는 이전 버전보다 훨씬 뛰어납니다. 2.7 – JBernardo

+0

@JBernardo 답변을 제공하고 이유를 자세히 설명 할 수 있습니까? 또한 당신이 스레드를 말하는 이유, 스레딩 또는 녹색 스레드를 의미합니까? 몇 가지 구체적인 예를 들어 주시면 감사하겠습니다. – Shengjie

+0

'threading' 라이브러리의 스레드와 같은 스레드. 이 질문은 SO 형식으로는 너무 광범위합니다 ... 당신이하고 싶은 것에 대한 실제 사례를 추가해야합니다. – JBernardo

답변

1

유튜브 성장에 대한 기술 토론에서 처음 보았던 접근 방식은 병목 현상을 식별하고 해결하고, 마시고, 잠을 자고, 다시 병목 현상을 계속합니다.

작업량이 많고 코어가 유휴 상태 일 때 더 많은 프로세스를 실행하십시오. 동일한 접근 방식을 사용하면 프로세스 풀을 중단하거나 축소 할시기를 알 수 있습니다.

[1] https://www.youtube.com/watch?v=ZW5_eEKEC28

+0

답변의 일부로 YouTube 링크를 제공 할 수 있습니까? 고마워요 :) – Shengjie

+0

@ Shengjie 당신을 환영합니다 – temoto