首頁 > 後端開發 > Python教學 > 如何從 Python 線程檢索回傳值?

如何從 Python 線程檢索回傳值?

Barbara Streisand
發布: 2024-12-17 06:10:26
原創
576 人瀏覽過

How Can I Retrieve Return Values from Python Threads?

從執行緒存取回傳值

當在 Python 中建立執行緒時,它們的目標函數可能會傳回一個值。然而,使用標準方法從主執行緒檢索此傳回值並不簡單。

一種選擇是將可變物件(例如清單或字典)傳遞給執行緒並將結果儲存在指定的槽中。此方法需要向線程傳遞額外的參數並維護線程和物件之間的連接。

另一種方法是子類化 Thread 類別並重寫 run 和 join 方法。在重寫的 run 方法中,目標函數的傳回值會儲存在子類別內的私有屬性中。重寫的 join 方法傳回儲存在此屬性中的值。

這是使用ThreadWithReturnValue 子類別的範例:

class ThreadWithReturnValue(Thread):
    
    def __init__(self, group=None, target=None, name=None,
                 args=(), kwargs={}, Verbose=None):
        Thread.__init__(self, group, target, name, args, kwargs)
        self._return = None

    def run(self):
        if self._target is not None:
            self._return = self._target(*self._args,
                                                **self._kwargs)
    
    def join(self, *args):
        Thread.join(self, *args)
        return self._return
登入後複製

要使用此子類別:

twrv = ThreadWithReturnValue(target=foo, args=('world!',))

twrv.start()
print(twrv.join())  # prints 'foo'
登入後複製

而這種方法是有效的,它需要自稱為定義Thread類,這可能並不適用於所有場景。最終,最佳方法取決於應用程式的特定需求和要求。

以上是如何從 Python 線程檢索回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板