gpt4 book ai didi

python - 如何在python中使库异步

转载 作者:行者123 更新时间:2023-11-28 21:23:51 26 4
gpt4 key购买 nike

在我的工作中,他们“利用” Tornado ,但他们没有异步库。是什么让一个库异步,以便它可以更好地适应像 Tornado 这样的东西?有没有什么好的例子,或者我猜你在 __enter____exit__ 中做了什么可以表明你没有阻塞?

我发现很难拼凑一些 Material 。

最佳答案

如果您的库不是异步的并且不支持在 tornado ioloop 中运行,那么您唯一能做的就是在其他线程中运行这些任务。

本质上,有两种选择,取决于你是否想要接收返回值:

  1. 你把你的工作放在一个队列中,一些线程从队列中拉取工作并处理这些任务 ==> 没有返回值
  2. 或者您使用执行程序库 (python 3.2) 并将工作发送到 executor ,添加一个回调以表示任务已完成并将控制权交还给 tornado 的 ioloop(通过卡在循环中的另一个回调)。

如果 your_task_func 是您要卸载到另一个线程的同步任务,则基本上执行以下操作:

def callback(future):
# here you want to do some stuff with the value future.result()

EXECUTOR.submit(
your_task_func
).add_done_callback(
lambda future: tornado.ioloop.IOLoop.instance().add_callback(
partial(callback, future)))

有关此的更多详细信息,请参阅 this nice write-up .

问候马库斯

关于python - 如何在python中使库异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16853632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com