使用导入模块循环中断" interruptringcow"导入错误

时间:2015-01-05 08:31:43

标签: python interrupt

我在下载名为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

提前谢谢你的家伙!

1 个答案:

答案 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循环,我认为这样做可以满足您的需求,而无需额外的依赖。

相关问题