【发布时间】:2017-02-19 18:35:01
【问题描述】:
我正在为一位数论家朋友计算一堆具有特殊属性的三角形。这些三角形有无数个,但它们需要大量的计算能力才能找到。
我们有一个无限循环通过不同的 b,d 组合运行。当程序结束时,它调用 go(dict) 函数来导出它找到的三角形。目前,我们在开始时告诉程序运行的时间间隔。当我们意识到我们需要计算能力来做其他事情时,这会导致问题,但是程序还有几个小时要运行,我们不想在不运行 go(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
【问题讨论】:
-
你使用的是什么操作系统?
标签: python loops dictionary