2012-06-08 7 views
0

참고 :이 주제에 대한 교육이 부족하기 때문에 약간의 천진난만한 가정을하고있을 수도 있습니다.GIL을 스레드 풀로 사용하기

차단 입출력을 수행하는 기능이 있다고 가정하십시오. 이 함수를 n 번 실행해야합니다.

스레딩 모듈을 사용하여 n 개의 스레드를 생성하고 동시에 시작하는 경우 (예 : 스레딩 모듈 사용) 단순히 GIL을 사용하여 스레드를 관리합니다 (I/O 기반). 서브 프로세스를 관리하기위한 multiprocessing.pool 모듈?

답변

4

그것은 코드의 핵심 기능으로 구현 세부를 사용하는 나쁜 습관이다. GIL은 CPython의 구현 세부 사항이며 other implementations에는 존재하지 않습니다.

원하는 것을하기 위해 설계된 것을 사용하십시오.

+1

물론. 이것은 실제적인 것보다 학문적 인 질문입니다. – pdeuchler

+0

@pdeuchler 이론적 인 답변을 원한다면이 점을 받아 들일 수 없습니다. 다른 누군가가 와서 이론적으로 가능한 방법에 대해 이야기 할 것이라고 확신합니다. 하지만 저는이 질문을 실제로 실용적으로 답변 해 드리겠습니다. 이것이 바로 SO가 제공하는 것입니다. –

0

GIL은 어떻게 관련이 있습니까? 너는 그걸 벗어나기를 기대하고 있니?

당신은 산란 n 개의 스레드와 그들 모두를 가질 수 있습니다 수행 차단 I/O하는 GIL없이.

그리고 당신은 스레드 - 예컨대, 당신은 일 - 당신이 때 아직 명시 적으로 수행에 필요한 모든 그래서 당신은 알고 가입 "관리"하고 싶은 경우.; GIL은 도움이되지 않습니다.

+0

이것은 답변보다 더 많은 코멘트입니다. –