我正在计算一群具有特殊属性的数字理论家朋友的三角形。这些三角形中有无数个,但它们需要大量的计算能力才能找到。用户输入打破无限循环?
我们已经有一个无限循环遍历不同的b,d组合。程序结束时,它会调用go(dict)函数来导出找到的三角形。目前,我们在开始时告诉程序运行的时间间隔。当我们意识到我们需要计算能力来做其他事情时,这会产生问题,但是程序仍然有几个小时可以运行,并且我们不想失去已经计算出的三角形,而无需运行(dict)。
理想情况下,我们希望某些用户输入可以使程序打破循环,用任何当前版本的内存中的字典运行go(dict),然后退出。尝试使用atexit.register(go,dict)不成功,因为它在循环中多次调用,并在程序终止时运行很多次。
(请参见下面的缩写循环代码)
interval = eval(input("How many hours shall I run for? "))*3600
starttime = time.time()
dict = {}
b = start_value
while True:
for d in range (1, b):
compute stuff
if (condition):
add triangle to dict
if (time.time()-starttime)>interval:
go(dict)
return
b +=1
你正在使用什么操作系统? – martineau