Python中線程傳值是一個重要的概念,它在很多應用場景中都非常實用。在Python中,線程可以非常方便地進行創建和管理,但是線程間的信息共享卻不是一件易事。為了解決這個問題,Python提供了多種線程之間共享數據的方法,其中最常用的便是使用Queue和event等。下面我們就來看一下Python中如何通過線程傳值。
import threading def worker(val): print('worker thread starts') print('value received:', val) print('worker thread ends') if __name__ == '__main__': print('main thread starts') threading.Thread(target=worker, args=(10,)).start() print('main thread ends')
在上面的代碼中,我們首先創建了一個worker函數,然后定義了一個Thread對象以及要傳入的參數val。在主線程中,我們啟動了一個新線程,將worker函數和參數(10)傳遞給Thread對象。最后我們在主線程中打印結束信息。
運行程序,我們會看到輸出結果如下:
main thread starts main thread ends worker thread starts value received: 10 worker thread ends
從輸出結果來看,我們可以發現工作線程的參數10已經成功傳遞給了worker函數,并且工作線程順利地執行了任務。
需要注意的一點是,如果線程傳遞的是可變對象,則在線程操作之后,原對象的值也會發生相應的變化。比如下面這個例子:
import threading def worker(a): a.append(10) if __name__ == '__main__': a = [] t = threading.Thread(target=worker, args=(a,)) t.start() t.join() print(a)
在這個例子中,我們使用了一個空列表a,并將其作為參數傳入worker函數中。在worker函數中,我們對a列表添加了一個值10。最后,我們在主線程中輸出了a列表的值。
運行程序,我們會看到輸出結果如下:
[10]
由此可知,線程中對a列表的添加操作已經被成功傳回了主線程中,并且a列表的值已經發生了相應的變化。
線程傳值這個話題遠遠沒有講盡,這里僅僅是介紹了一些基本的用法。如果您感興趣的話,可以繼續深入了解Python中線程傳值的更多知識。