0
我從API獲取兩個數據流,所以有三個線程,main,stream1和stream2。 Stream1和Stream2需要處理這些數據,一旦完成,它們將存儲在main_value1和main_value2上。在多線程中讀取一個變量
從主線程我需要讀取任何給定時間的最後一個值(所以如果我需要這個值,它仍然處理,然後我得到最後處理/存儲一個),什麼是最佳的方式?從這裏的代碼示例中,我需要幫助編碼功能get_main_value1(),當然,get_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