调用多处理池时生成的Python字节码

调用多处理池时生成的Python字节码,python,python-2.7,multiprocessing,Python,Python 2.7,Multiprocessing,我编写了一些Python 2.7代码,其中设置了sys.dont_write_bytecode=True,以防止.pyc文件被写入。我以前使用过很多次,没有问题 我现在正在使用多处理开发一个新程序,我注意到在调用池时会生成字节码,而不管字节码变量是什么。请帮助我了解原因 以下是工作测试代码: import sys sys.dont_write_bytecode = True from multiprocessing import Pool # bytecode gets generated w

我编写了一些Python 2.7代码,其中设置了sys.dont_write_bytecode=True,以防止.pyc文件被写入。我以前使用过很多次,没有问题

我现在正在使用
多处理
开发一个新程序,我注意到在调用
时会生成字节码,而不管字节码变量是什么。请帮助我了解原因

以下是工作测试代码:

import sys
sys.dont_write_bytecode = True
from multiprocessing import Pool

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

print 'done'

我猜这是因为
multiprocessing
产生了新的python解释器进程,而这个标志只在设置它的进程内部有意义。我还猜测它实际上会在POSIX系统上工作,在POSIX系统中,多处理使用
fork()
,这可能会保留解释器状态,在我的系统中似乎就是这样。而且,我最后的猜测是,避免这些字节码文件可能不是那么容易,因为多处理仅在导入模块后才在Windows上运行工作代码,而此时正是创建字节码文件的时刻。但所有这些都只是基于我对解释器和多处理模块如何工作的知识的有根据的猜测,请等待一些真正的答案

您是否考虑过
python-B
pythontwritebytecode
envvar?我不得不查找这些,但环境变量方法似乎奏效了。我想这意味着字节码总是关闭(而不是逐个关闭),但这对我来说很有效。谢谢你的反馈。听起来似乎有道理——至少你给了我一些进一步调查的途径。