【发布时间】:2015-09-02 01:04:51
【问题描述】:
我有一个类函数(我们称之为“alpha.py”),它使用多处理 (processes=2) 来分叉一个进程,它是我编写的 Python 包的一部分。在一个单独的 Python 脚本(我们称之为“beta.py”)中,我从这个类中实例化了一个对象,并调用了使用多处理的相应函数。最后,所有这些都包装在一个包装 Python 脚本(我们称之为“gamma.py”)中,该脚本处理许多不同的类对象和函数。
基本上:
- 从命令行运行 ./gamma.py
- gamma.py 使用子进程并执行 beta.py
- beta.py 从 alpha.py 类实例化一个对象并调用使用多处理 (processes=2) 的函数
这在 Mac 或 Linux 上运行没有问题。但是,它在 Windows 机器上成为一个问题,并且错误(和文档)表明我应该在某处写这个:
if __name__ == '__main__':
freeze_support()
This other post 也提到做同样的事情。
但是,我不知道这两行的确切位置。目前,alpha.py、beta.py 或 gamma.py 都不包含 if __name__ == '__main__': 部分。如果有人能告诉我这两行应该去哪里以及背后的理由,那就太好了。
【问题讨论】:
-
您能提供您收到的错误消息吗?堆栈跟踪?你解决了这个。我很惊讶没有答案。
标签: python python-2.7 python-multiprocessing