これはノブの質問です。バックグラウンドプロセスは他の計算を行い、その結果を変数に保存しながら、メインプロセスを実行して処理する必要があります。メインスレッドが望むときは、変数に格納されている最後の値を読み取ることができます。以前に格納された値はすべて忘れてしまいます。バックグラウンドプロセスが数えているとしましょう:私は今の時点で何番号にあるのか知りたいです。Pythonで、プロセスをバックグラウンドで実行してメインスレッドからステータスを取得してください
from multiprocessing import Process, Pipe
import os
import time
def f(queue):
a=0
while True:
a=a+1
child_conn.send(a)
time.sleep(0.1)
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=f, args=(child_conn,))
p.start()
time.sleep(1)
while True:
print(parent_conn.recv())
time.sleep(1)
したがって、メインスレッドはバックグラウンドスレッドの変数を毎秒印刷します。これは1秒に10回更新されます。 私はPipe and Queueを試しましたが、最後に格納された変数を取得しません。この出力は1,2,3,4、...ですが、私は10,20,30、...(または同様のタイミングで)取得したいです。ここでの問題は、名前が示すように、キューとして機能することです。
私がjavaで行うことは、asynctaskのようなものを作成してパブリック変数を更新することですが、マルチプロセスは変数を共有できないということです。
Pythonでこれを行う正しい方法は何ですか?