python - 为什么我的 Python 3 代码会自行编译?

标签 python multiprocessing python-3.3 compiled

我正在按照 Python 3 文档学习多重处理,但我注意到一些我以前没有注意到的奇怪的事情。运行脚本后,代码将被编译为“pycache”目录中的工作独立二进制文件。有人可以向我解释一下吗? 如果重要的话,我正在使用 Windows 8 和 Python 3.3(两者都是 AMD64)。谢谢。

from multiprocessing import Process

def f(name):
    print('hello',name)

if __name__ == '__main__':
    for i in range(5):
        p = Process(target=f, args=('bob',))
        p.start()
        p.join()
    input() #Added this so that I can see my results.

我正在关注的教程: http://docs.python.org/3.3/library/multiprocessing.html

最佳答案

当导入模块时,Python 将缓存字节码,因此不需要重新解析文件。缓存的字节码位于 __pycache__ 文件夹中。 multiprocessing 隐式导入您的模块,因此它会被缓存。可以安全地忽略它,因为 Python 很聪明,如果它过时就不会使用它。如果您确实不希望它到处创建这些目录和文件,请将环境变量PYTHONDONTWRITEBYTECODE设置为1

关于python - 为什么我的 Python 3 代码会自行编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16247984/

相关文章:

python - 为什么zip(*(range(1000),)* 1000000)这么快?

python 3 : Using a multiprocessing queue for logging

image - 如何使用 ImageQt

python - 尝试解析表中的表

python - 如何使用Python并行化CPU密集型数据处理任务?

php - 如何解码 unicode python 参数?

python - 使用类/返回列表进行多处理 - Python

python - 提高挂载目录的 IO 性能?

python - PEP 412 是否使 __slots__ 变得多余?

python - Matplotlib - 在同一张图上格式化两个图