[英]Python - Running Function in Separate Thread, Then Accessing It
所以我有一個 Python 代碼運行一個非常昂貴的函數,該函數有時會按需執行,但它的結果不是立即需要的(它可能會延遲幾個周期)。
def heavy_function(arguments):
return calc_obtained_from_arguments
def main():
a = None
if some_condition:
a = heavy_function(x)
else:
do_something_with(a)
問題是,每當我計算重函數時,程序的其余部分都會掛起。 但是,我需要用它來清空運行a
值,或者最好讓它知道, a
被單獨處理,因此不應該被訪問。 如何將heavy_function移動到單獨的進程並一直調用main函數直到heavy_function執行完成,然后讀取獲得的值並在main函數中使用它?
你可以使用一個簡單的隊列。
heavy_function
放在一個單獨的進程中,只要輸入隊列中沒有輸入,該進程就會空閑。 使用Queue.get(block=True)
這樣做。 將計算結果放入另一個隊列。a
值運行您的正常進程,並不時檢查輸出隊列的空性。 也許使用while Queue.empty():
在這里。heavy_function
已完成,請切換到輸出隊列中值為a
的計算。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.