Number Theoristの友人のための特別なプロパティを持つ三角形の束を計算することに取り組んでいます。無限に多くの三角形がありますが、それらを見つけるには多くの計算力が必要です。無限ループを壊すユーザー入力?
異なる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
使用しているオペレーティングシステムは何ですか? – martineau