2014-06-24 7 views
2

파이썬 2.7은 다른 코어에서 여러 스레드를 실행할 수 없으므로 어느 정도의 동시성을 얻기 위해서는 multiprocessing 모듈을 사용해야합니다. 나는 파이썬 3.4에서 concurrent.futures 모듈을보고 있었다. ThreadPoolExecutor을 사용하면 다른 프로세스에서 다른 스레드를 실행할 수 있습니까? 아니면 GIL 제약 조건에 여전히 바인딩되어 있습니까? 그렇지 않다면 Python 3.4를 사용하여 다른 프로세서에서 스레드를 실행하는 방법이 있습니까?여러 코어에서 파이썬 스레드를 실행하십시오.

내 경우에는 여러 프로세스를 사용하는 것이 절대적으로 불가능합니다.

+0

호기심 - 어떤 상황에서 여러 프로세스가 절대적으로 실현 불가능합니까? – Roberto

+0

메모리가 거의없는 임베디드 시스템에서 작업한다고 가정 해 보겠습니다. 여러 개의 프로세스를 생성하는 것은 좋지 않습니다. 나는 파이썬이 선택의 언어가되어서는 안된다는 것에 동의한다. 내가 수행하고있는 작은 실험 일뿐입니다. –

답변

3

아니요. ThreadPoolExector는 다중 스레드 작업을 예약하는 데 도움이되는 클래스입니다. 모든 일반 스레드 제한 조건이 여전히 적용됩니다.

일부 혼동을 해결하기 위해 운영 체제가 선택한 것과 같이 스레드가 다른 프로세서/코어에서 실행되지만 스레드는 동시에 실행되지 않습니다. 예외적으로 일부 C 기반 함수는 잠금을 필요로하지 않는 작업을 수행하는 동안 GIL을 일시적으로 해제합니다.

+0

감사합니다. 그 질문에 완벽하게 답변! –