[英]Python: Change passed variable in thread and use the new value outside the thread?
對不起,如果之前有人問過這個問題,但我找不到解決一個奇怪問題的方法,我現在有。 就像我在很多文章中閱讀的那樣,應該可以將變量傳遞給 Python 中的線程,在那里更改它,並在調用線程中使用新值? 但這對我不起作用。 我在這里有一個示例代碼:
from threading import Thread def change(val): val = False def start(): val = True t = Thread(target=change, args=(val,)) t.start() t.join() print(val) #--> stays True but should be False start()
如果有人知道問題是什么,我很高興回答。
問候 Leuko
在方法中, value
的內存地址發生變化,所以是不同的對象(局部變量)。
為了您的目標,使用一個對象並更改一個屬性,以便對象地址保持不變。
試試這個代碼
from threading import Thread
def change(val):
val[0] = False # list address stays the same, update attribute
def start():
val = [True] # list object
t = Thread(target=change, args=(val,))
t.start()
t.join()
print(val[0]) # False
start()
請注意,這在不使用多線程時也適用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.