簡體   English   中英

Python:更改線程中傳遞的變量並在線程外使用新值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM