我是新来的,这是我的第一个问题。我正在使用Python 3.2.3制作一个游戏,我遇到一个问题,在调用它的start()
方法后,Timer对象有时会崩溃解释器(它有50%的时间发生,总是有一个错误窗口说Python停止工作,不得不终止)。
我一直在简化我的代码,所以我可以找到问题,我发现这个非常简单的代码会崩溃我的解释器:
from threading import Timer
def hello():
print("hello, world")
t = Timer(1.0, hello)
t.start()
我已经尝试修复我的Python安装,但是没有用。我在Windows 7下运行Python并且不幸的是到目前为止还没有机会尝试其他操作系统,所以如果有任何人对此问题有任何经验,我将不胜感激。谢谢大家。
答案 0 :(得分:1)
我重建了你的问题,你的代码对我来说很好。 您可能需要考虑使用时间库吗?
from time import sleep
def hello():
print('hello world')
sleep(1)
hello()
这对您来说可能是更安全的解决方案,但我建议您更新操作系统并重新安装python。试过python2.7?
答案 1 :(得分: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)
其他人尝试重现的原因是没有遇到问题的原因是他们将脚本作为一个独立的进程运行,并且当该进程退出时,操作系统取消注册计时器,而您应该在交互模式下工作
真正的解决方案是停止使用交互模式来处理计时器和线程。
更多背景here。
答案 2 :(得分:1)
所以问题解决了,重新安装Python有帮助。然而,维修安装没有,这可能是件好事。谢谢你的帮助。