停止機能の実行中のステータスが「停止」されている場合、アップロード機能で例外を発生させたいと考えています。これはうまくいかないようです。私は例外を渡すためにパイプを使用しています。なにが問題ですか?あるプロセスから別のプロセスに例外を渡すには?
def upload(instances, u1):
for instance in instance:
try:
u1.recv()
#do_something
except:
#do_something_else
continue
def stop(instances, s1):
for instance in instances:
RunningStatus = instance[4]
if RunningStatus.lower() == 'stopped'.lower():
s1.send(Exception) # I want to raise exception in upload function
# from here
if __name__ == '__main__':
s1, u1 = multiprocessing.Pipe()
s = multiprocessing.Process(target = stop, args = (instances, s1,))
u = multiprocessing.Process(target = upload, args = (instances, u1))
s.start()
u.start()
u.join()
私は学ぶためにあなたの問題を単純化しようとしますPythonで例外を処理する方法。それでも問題が解決しない場合は、問題の例をhttp://stackoverflow.com/help/mcveで最大限に作成してください。例外を「正しく」渡す方法を尋ねるだけではあまりにも曖昧です。 – PerryC
@PerryCわかりやすくするために文言を変更しました。 – user6690270
あなたは直接することはできません。しかし、共有された 'multiprocessing.Value'を使って、あるプロセスが他のプロセスと通信できるようにすることができます。 'Value'は、例外がいつ発生したかを示すフラグとして使用できます。追加情報が必要な場合は、それらの間にさらに情報を伝える必要があります(おそらく 'Queue'を使用します)。ドキュメントの[プロセス間の共有状態](https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes)セクションを参照してください。 – martineau