Dam*_*leș 12 python multithreading
我有以下代码:
async some_callback(args):
await some_function()
Run Code Online (Sandbox Code Playgroud)
我需要将它作为目标提供给一个线程:
_thread = threading.Thread(target=some_callback, args=("some text"))
_thread.start()
Run Code Online (Sandbox Code Playgroud)
我得到的错误是“some_callback从未等待”。
任何想法如何解决这个问题?
小智 16
您可以通过在执行异步之间添加函数来实现:
async def some_callback(args):
await some_function()
def between_callback(args):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(some_callback(args))
loop.close()
_thread = threading.Thread(target=between_callback, args=("some text"))
_thread.start()
Run Code Online (Sandbox Code Playgroud)
mck*_*brd 14
从 Python 3.7 开始,您可以使用asyncio.run()比loop.run_until_complete()以下更简单的方法:
_thread = threading.Thread(target=asyncio.run, args=(some_callback("some text"),))
_thread.start()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10076 次 |
| 最近记录: |