1
におけるマルチプロセッシング・プロセスのタイムアウトを実装する:私は何を期待は私のPython
import multiprocessing as mp
q = mp.Queue()
p = mp.Process(target=lambda x: x, args=('foo',))
p.start()
p.join(10)
if p.exitcode == 0:
q.get()
else:
print("We timed out.")
は私の小さなx->x
機能は最大10秒間ブロックすることです。それ以前に終了した場合は、その結果をすぐに取得します。それよりも時間がかかる場合(明らかにこのおもちゃの例ではないが、他の場合)、プロセスは10秒後に終了し、実際にタイムアウトしたことを確認するためにexitcode
をチェックすることができます。
しかし、このコードを実行すると、代わりにq.get()
が永遠に実行されます。なぜこれが起こるのですか?