我正在計算一羣具有特殊屬性的數字理論家朋友的三角形。這些三角形中有無數個,但它們需要大量的計算能力才能找到。用戶輸入打破無限循環?
我們已經有一個無限循環遍歷不同的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