【发布时间】:2014-07-23 08:57:05
【问题描述】:
如果我在 Python 2.7.8 的 IDLE 中运行这个简单的代码,它会弹出一个窗口说“程序仍在运行!你想杀死它吗?”。
from multiprocessing import Pool
def foo(x):
return x**2
if __name__ == '__main__':
pool = Pool(2)
pows = pool.map(foo, range(10))
print pows
即使我杀与不杀(它会问两次),也不会发生任何事情。我以前使用 Windows,最近才开始使用 Mac OSX (10.9.4),不知道是不是漏掉了什么。
如果我直接在终端的 Python Shell 中运行相同的代码,它将运行良好。在 iPython 笔记本中也是如此。它只是不会在 IDLE 上弹出那个消息框。
有什么想法吗?我想继续使用 IDLE...
这是日志:
INFO:root:10221: Started process
INFO:root:10221: Defined foo
INFO:root:10221: __name__ == '__main__'
INFO:root:10221: pool created
【问题讨论】:
-
它会产生任何输出吗? (例如打印语句是否运行?)
-
根本没有输出......不管我是否选择杀戮。光标在控制台中不断闪烁,没有任何反应。似乎和这里的问题一样stackoverflow.com/questions/20760876/…
-
当我在 Win10 上使用 2.7.13 的 IDLE 编辑器运行它时,它会立即打印
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]。我不知道操作系统或版本的差异是否会导致不同的结果,但我建议在以后的 2.x 或 3.x 版本中使用 IDLE。
标签: python macos crash multiprocessing python-idle