簡體   English   中英

Python - 在單獨的線程中運行函數,然后訪問它

[英]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函數中使用它?

你可以使用一個簡單的隊列。

  1. 將您的重heavy_function放在一個單獨的進程中,只要輸入隊列中沒有輸入,該進程就會空閑。 使用Queue.get(block=True)這樣做。 將計算結果放入另一個隊列。
  2. 使用空的a值運行您的正常進程,並不時檢查輸出隊列的空性。 也許使用while Queue.empty():在這里。
  3. 如果某個項目變得可用,因為您的heavy_function已完成,請切換到輸出隊列中值為a的計算。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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