0
スレッド実行メソッドasyncをコルーチンを内部で実行できるようにすることはできますか?私はパラダイムを混在させていることを認識しています。私はプロジェクトでスレッドを使用しているのに対し、コルーチンを使用するサードパーティのライブラリを統合しようとしています。代わりにコルーチンを使用するようにプロジェクトを更新する前に、スレッド内でコルーチンを実行する方法を調べたいと思います。スレッド内でコルーチンを呼び出す
私はスレッドを持っていますが、私のスレッド内からコルーチンを呼びたい私の例usecaseです。私の問題は、関数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