3

我是新来的,这是我的第一个问题。我正在用 Python 3.2.3 制作游戏,我遇到了一个问题,即 Timer 对象有时会在调用它的start()方法后使解释器崩溃(这种情况发生在 50% 的时候,总是有一个错误窗口说 Python停止工作,不得不终止)。

我一直在简化我的代码,以便找到问题所在,我发现这个非常简单的代码会使我的解释器崩溃:

from threading import Timer

def hello():
  print("hello, world")

t = Timer(1.0, hello)
t.start()

我尝试修复我的 Python 安装,但没有成功。我在 Windows 7 下运行 Python,不幸的是到目前为止还没有机会尝试其他操作系统,所以如果有人对此问题有任何经验,我将不胜感激任何解决方案。感谢大家。

4

3 回答 3

1

脚本完成后,您不应留下线程或计时器。但是,我什至不确定以下不存在该问题的内容是否可以在您的系统上可靠地运行:

# This is NOT the suggested fix

from threading import Timer

def hello():
  print("hello, world")

t = Timer(1.0, hello)
t.start()
sleep(2)    

其他尝试重现的人没有遇到问题的原因是他们将脚本作为独立进程运行,并且当该进程退出时操作系统未注册计时器,而您应该在交互模式下工作。

真正的解决方案是停止使用交互模式来处理计时器和线程。

更多背景在这里

于 2012-07-11T12:45:54.957 回答
1

我重建了你的问题,你的代码对我来说很好。您可能要考虑使用时间库?

from time import sleep
def hello():
   print('hello world')
sleep(1)
hello()

这对您来说可能是一个更安全的解决方案,但我建议您更新操作系统并重新安装 python。用python2.7试过了吗?

于 2012-07-11T12:28:14.267 回答
1

所以问题解决了,重新安装Python有帮助。但是,修复安装没有,这可能是件好事。谢谢你的帮助。

于 2012-07-11T14:34:18.337 回答