私は別のモジュール(demo_2.py)、
を使ってサブプロセスを作成するコードを書こうとしています。Pythonマルチプロセッシングが間違った関数を使ってサブプロセスを作成する
結果は次のようになります。
demo_1がdemo_1と負荷demo_2を実行する二つのサブプロセスを作るようです。
サブプロセスはdemo_2のみを実行します。
私は何を欠席しましたか?
demo_1.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from multiprocessing import Process,Queue
import sys
import demo_2 as A
def multi_process():
print ("Function multi_process called!")
process_status_A = Queue()
process_status_B = Queue()
A_Process = Process(target = A.process_A, args = (process_status_A,))
B_Process = Process(target = A.process_A, args = (process_status_B,))
A_Process.start()
B_Process.start()
while True:
process_status_output_A = process_status_A.get()
process_status_output_B = process_status_B.get()
if process_status_output_A == 'exit' and process_status_output_B == 'exit':
print ("Success!")
break
process_status_A.close()
process_status_B.close()
A_Process.join()
B_Process.join()
sys.exit()
print ("demo_1 started")
if __name__ == "__main__":
multi_process()
demo_2.py
class process_A(object):
def __init__(self, process_status):
print ("demo_2 called!")
process_status.put('exit')
def call_exit(self):
pass
これは、なぜ私のコードが決して終わらず、Linuxでのみ必要な機能を果たしているかを説明しています(macOSでテストされていない)ありがとう! –