0

我必須在後臺啓動一個線程,但輸出似乎跟隨線程,而不是在main內堅持。我有這樣的事情:python線程,多線程與threading.thread

import threading 

def work() 
    while True: 
    do stuff 

def recieve() 
    while True: 
    await instruction 

#main 

recieve() 
if instruction == "do work" 
    threading.Thread(target=work()).start() 

我有拿到收到和處理順序,但因爲工作()需要很長的時間來完成我需要的線程許多其他的說明,現在,我希望一個線程是發起,在後臺工作,而我們繼續等待指示,除非這沒有發生。焦點保留在新創建的線程上會發生什麼情況,以至於無法接收到進一步的指令。

這是爲什麼?哪裏不對?

非常感謝

+0

可運行代碼將非常有幫助。我非常確定在正確的軌道上使用了falsetru,正如你在主線程中調用work()所顯示的那樣,生成的線程將試圖從work()運行* callable * *,這不是你想要的。 – AdamKG

回答

1

receive()永不停止因爲無限循環;線程無法啓動。

首先啓動線程。

if instruction == "do work": 
    threading.Thread(target=work).start() 
recieve() 

threading.Thread(target=work()).start()下降()work()使work函數調用在主線程中運行。

+0

感謝您的回覆,我沒有真正地在代碼中解釋它的指示收到良好和處理,但是,當收到「做工作」指令時,我嘗試產生一個線程,線程的產卵似乎成功,但線程有重點,而不是返回接收(),如果你知道我的意思 – user2625871

+0

我放棄(),我們有成功,謝謝。但是,我使用的信號,它不會運行在線程中。回到繪圖板 – user2625871