2014-02-20 2 views
2

.pyc 파일이 작성되는 것을 막기 위해 sys.dont_write_bytecode = True을 설정 한 파이썬 2.7 코드를 작성했습니다. 나는이 문제를 이전에 여러 번 사용했다.다중 처리 풀이 호출 될 때 생성되는 파이썬 바이트 코드

이제는 multiprocessing을 사용하는 새로운 프로그램에서 작업 중이며 바이트 코드 변수에 관계없이 Pool이 호출 될 때 바이트 코드가 생성됩니다. 이유를 이해하도록 도와주세요.

여기에 노력하고 테스트 코드 :

import sys 
sys.dont_write_bytecode = True 
from multiprocessing import Pool 

# bytecode gets generated when Pool is included 
pool = Pool(processes=2) 

print 'done' 
+1

당신은'python -B' 또는'PYTHONDONTWRITEBYTECODE' envvar를 고려 했습니까? – jfs

+0

나는 그것들을보아야했지만, 환경 변수 접근법이 효과가있는 것으로 보인다. 나는 그것이 바이트 코드가 항상 꺼져 있다는 것을 의미한다. – Roberto

답변

2

나는 multiprocessing 새로운 파이썬 인터프리터 프로세스를 생성합니다,이 플래그가 설정되어있는 프로세스 내에서만 의미가 있기 때문입니다 같은데요. 또한 실제로 다중 시스템에서 인터프리터 상태를 유지할 수있는 fork()을 사용하는 POSIX 시스템에서 작동하는 것으로 추측됩니다. 이는 시스템에서 발생하는 것 같습니다. 그리고 마지막으로 생각한 것은 바이트 코드 파일을 피하는 것이 쉽지 않을 수도 있다는 것입니다. 멀티 프로세싱은 바이트 코드 파일을 만들 때인 모듈을 가져온 후에 만 ​​Windows에서 작업자 코드를 실행하기 때문입니다. 하지만이 모든 것은 인터프리터와 멀티 프로세싱 모듈이 어떻게 작동하는지에 대한 지식을 바탕으로 교육받은 추측에 불과합니다. 실제 답변을 기다려주십시오.

+0

의견에 감사드립니다. 그럴듯한 소리가납니다. 적어도 당신은 더 이상 조사 할 길을 내게 주셨습니다. – Roberto