私は、concurrent.futuresモジュールを使用してpython3.2でタイムアウトを取得しようとしています。しかし、タイムアウトすると、実際に実行が停止することはありません。私は両方のスレッドとプロセスプールエグゼキュータを試してみましたが、どちらもタスクを停止せず、終了するまでタイムアウトが発生しません。だから誰でも知っている可能性がある場合は、この作業を取得するには?タイムアウトでconcurrent.futuresを使用するには?
import concurrent.futures
import time
import datetime
max_numbers = [10000000, 10000000, 10000000, 10000000, 10000000]
def run_loop(max_number):
print("Started:", datetime.datetime.now(), max_number)
last_number = 0;
for i in range(1, max_number + 1):
last_number = i * i
return last_number
def main():
with concurrent.futures.ProcessPoolExecutor(max_workers=len(max_numbers)) as executor:
try:
for future in concurrent.futures.as_completed(executor.map(run_loop, max_numbers, timeout=1), timeout=1):
print(future.result(timeout=1))
except concurrent.futures._base.TimeoutError:
print("This took to long...")
if __name__ == '__main__':
main()
txmcあなたはプロセスの1つを殺すことができますか?それとも、すべてを殺さなければならないのですか? –