<p>我正在为一位数论家的朋友计算一堆具有特殊性质的三角形。这些三角形有无穷多,但它们需要大量的计算能力才能找到。在</p>
<p>我们有一个无限循环,通过不同的b,d组合运行。当程序结束时,它调用go(dict)函数导出它找到的三角形。目前,我们在开始时告诉程序运行的时间间隔。当我们意识到我们需要其他东西的计算能力时,这就造成了问题,但是程序还有几个小时要运行,我们不想失去它已经计算的三角形,而不运行go(dict)。在</p>
<p>理想情况下,我们需要一些用户输入,以使程序中断循环,在内存中使用当前版本的字典运行go(dict),然后退出。尝试atexit.register公司(go,dict)不成功,因为它在循环中被调用多次,并在程序终止时运行多次。在</p>
<p>(参见下面的缩写循环代码)</p>
<pre><code>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
</code></pre>