我编写了一些Python 2.7代码,我设置sys.dont_write_bytecode = True
以防止写入.pyc文件。我以前曾经多次使用过这个问题。
我正在使用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'
答案 0 :(得分:2)
我猜这是因为multiprocessing
产生了新的python解释器进程,并且该标志仅在设置它的进程内有意义。我也猜测它实际上可以在POSIX系统上运行,其中多处理使用fork()
,这可能会保留解释器状态 - 在我的系统中似乎就是这种情况。而且,我最后的猜测是,避免这些字节码文件可能并不那么容易,因为多处理仅在导入模块后在Windows上运行工作程序代码,这是创建字节码文件的时刻。但所有这些只是基于我对解释器和多处理模块如何工作的知识的一种有根据的猜测 - 请等待一些真正的答案。