0
APIから2つのデータストリームが得られるので、3つのスレッド、メインストリーム、ストリーム1およびストリーム2があります。 Stream1とStream2はこのデータを処理する必要があり、処理が完了すると、main_value1とmain_value2に格納します。マルチスレッド中に変数を読み取る
メインスレッドからは、いつでも最後の値を読み取る必要があります(この値が必要な場合は処理中ですが、最後に処理/保存された値が得られます)。
def stream1():
while True:
main_value1 = process()
def stream2():
while True:
main_value2 = process2()
def get_main_value1(): ?
def get main_value2(): ?
def main():
threading.Thread(function=stream1,).start()
threading.Thread(function=stream2).start()
while True:
time.sleep(random.randint(0,10))
A = get_main_value1()
B = get_main_value2()
おそらくそれは愚かな質問です:関数によって設定されている間にこの値が必要な場合はどうすればよいですか?何が起こるか、またはこれは起こることが不可能ですか? –
@FroidDymylja分かりません。私のコードを見れば、 'process2()'は 'STREAM2_LAST_VALUE'を上書きする値を返します。したがって、中間状態は不可能である。また、 'process2()'は常に最後の値も見るので、安全に使うことができます。 'STREAM2_LAST_VALUE'オブジェクトの更新を直接行うと、矛盾が生じる可能性があります。簡単な読み書きの一貫性はPythonで保証されています。 – freakish
_ "単純な読み書きの一貫性はPythonで保証されています" _?あなたはこれを読むためのリンクを提供できますか? – stovfl