0
是否有可能使線程運行方法異步,因此它可以在其內部執行協程?我意識到我是混合範例 - 我試圖集成使用協同程序的第三方庫,而我的項目使用線程。在考慮更新我的項目來使用協程,而不是我想探索在我的線程中執行協程。線程內調用協程
下面是我的示例用例,我有一個線程,但我想從我的線程中調用一個協程。我的問題是功能MyThread::run()
似乎沒有執行(打印)。我正在嘗試可能......並且是可取的?
from threading import Thread
class MyThread(Thread):
def __init__(self):
Thread.__init__(self)
self.start()
# def run(self):
# while True:
# print("MyThread::run() sync")
async def run(self):
while True:
# This line isn't executing/printing
print("MyThread::run() sync")
# Call coroutine...
# volume = await market_place.get_24h_volume()
try:
t = MyThread()
while True:
pass
except KeyboardInterrupt:
pass
感謝您的回答。當我運行代碼時,沒有顯示打印輸出。但是,如果我註釋掉'await asyncio.sleep(1)',它會顯示多次輸出MyThread :: run()sync,以便線程正在運行。你能解釋一下是怎麼回事?爲什麼不打印代碼'await asyncio.sleep(1)'? –
@JakeM它用..sleep爲我打印'MyThread :: run()sync' ..你使用的是哪個版本的python?我使用3.6.1進行了測試。 – falsetru