我在下载名为interruptingcow的模块时遇到问题 它应该允许我在一段时间后中断一个循环。 我找到了与pip一起安装的最新版本。
import time
from random import *
from interruptingcow import timeout
points = 0
error = 0
print('Today we will learn calculus! We will multiply random numbers from 2-10.\nPress Enter when ready!')
input()
try:
with timeout(20, exception=RuntimeException):
while True:
XX, YY = randint(2, 10), randint(2, 10)
print(XX, 'X', YY)
if XX*YY == int(input('odgovor? > ')):
print('GG! +1 point')
points += 1
else:
print('Error! The real result is:', XX*YY)
error = 1
break
except RuntimeException:
print('Your time is UP!')
print('Your score is:',points,'Thanks for playing! Press enter when you want to finish!')
input()
我认为问题在于python的版本?但我不知道如何解决它。有任何想法吗? RuntimeException在程序中加下划线,这可能是错误之一,另一个是: ImportError:无法导入名称' GeneratorContextManager'
我查看了interruptingcow代码,其中一个导入是:
from contextlib import GeneratorContextManager
提前谢谢你的家伙!
答案 0 :(得分:0)
您根本不需要这个interruptingcow
模块,使用Python的内置signal
设置单个计时器来中断循环很容易模块:
import signal
def handler(signo, frame):
raise RuntimeError
signal.signal(signal.SIGALRM, handler)
signal.alarm(1) # seconds
while True:
print 'zzz'
只需替换您自己的while True
循环,我认为这样做可以满足您的需求,而无需额外的依赖。