如何在Python中使库异步

2024-04-04

在我的工作中,他们“利用”龙卷风,但他们没有异步库。是什么让库变得异步,以便它更适合龙卷风之类的东西?有没有什么好的例子或者我猜你在做什么__enter__ or __exit__这可以表明您没有阻止?

我发现很难将一些材料拼凑在一起。


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

本质上,有两个选项,具体取决于您是否想要接收返回值:

  1. 您将工作放入队列中,一些线程从队列中提取工作并完成这些任务 ==> 无返回值
  2. 或者您使用执行器库(python 3.2)并将工作发送到executor http://docs.python.org/dev/library/concurrent.futures.html,添加一个回调来表示任务已完成,并将控制权传递回龙卷风的 ioloop(通过挂在循环中的另一个回调)。

If 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)))

有关此内容的更多详细信息可以在这篇好文章 http://lbolla.info/blog/2013/01/22/blocking-tornado.

问候 马库斯

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中使库异步 的相关文章

随机推荐

  • fft 和小波

    我可以使用 fft 获取加载的 1 秒音频文件的频率 相位和幅度 并重新创建它 我现在想做的是找出每个频率在 1 秒音频文件中的开始位置和结束位置 并将数据放入数组中 示例 100hz 从 0 23 秒到 0 34 秒开始 104 34hz
  • 如何修复双编码 UTF8 字符(在 utf-8 表中)

    以前的一个LOAD DATA INFILE运行时假设 CSV 文件是latin1 编码 在此导入过程中 多字节字符被解释为两个单字符 然后 再次 使用 utf 8 进行编码 这种双重编码产生了异常 例如 代替 如何纠正这些字符串 以下 My
  • 在电子中创建多个预加载文件(每页一个)

    我正在创建我的第一个 Electron 应用程序 并且完成了表单的第一页 现在这个应用程序不是 SPA 所以我有大约 3 4 个不同的页面 并且页面通向另一个页面 为了允许正确的代码组织 我想为每个面向客户端的页面保留一个单独的预加载文件
  • 如何设置 NHibernate 事务的超时

    我需要在单个事务中完成大量数据库处理 包括使用 NHibernate 的一些处理 为了使所有内容在同一个事务中工作 我使用 NHibernate 的 Session 来启动它 并在其中登记其他工作的命令 一切都很顺利 直到我承诺为止 那时我
  • 停止无限循环中的delphi程序

    当 Delphi 中发生无限循环时 当我按下停止按钮时 调试器甚至不会给我堆栈跟踪 如果我怀疑程序在哪里停止 我可以放置一个断点 如果这是正确的无限循环 它将停止 下面是一个故意造成无限循环的示例程序 procedure TForm1 bt
  • Android 中的最大 BackStack 大小

    我是android开发的新手 我需要知道最大内存大小 of 后台堆栈 in android我想知道有多少活动 of 安卓应用 can be 存储在 BackStack 中 Thanks 后台堆栈的最大内存大小与设备上的可用内存量相同 您可以
  • 有 F#(或 C#)中的 R 树实现吗? [复制]

    这个问题在这里已经有答案了 可能的重复 是否有任何记录在案的 NET 的免费 R Tree 实现 https stackoverflow com questions 2041834 is there any documented free
  • 多行组并使用正则表达式进行搜索

    好的 正则表达式向导 我希望能够搜索我的日志文件并找到其中包含 错误 一词的任何会话 然后返回整个会话日志条目 我知道我可以使用字符串 数组来做到这一点 但我想学习如何使用正则表达式来做到这一点 但这就是问题 如果我决定使用正则表达式来做到
  • DataTables 固定标题与宽表中的列未对齐

    Problem 当使用sScrollX sScrollXInner and or sScrollY为了实现内部内容滚动的固定标题表格 在 Chrome 和 IE 中 表格的标题与正文的其余部分不对齐 另一方面 Firefox 可以完美地显示
  • 为什么堆比二叉树更好地表示优先级队列?

    在 最大 堆中 很容易找到最大的项目O 1 时间 但要真正删除它 你需要复杂性O log n 因此 如果从堆中插入和删除都是O log n 用堆来表示优先级队列比二叉树有什么优点 堆使用较少的内存 它们可以作为数组实现 因此没有存储指针的开
  • OpenFileDialog 切断预先填充的文件名[重复]

    这个问题在这里已经有答案了 我使用以下命令来显示 打开文件 对话框 OpenFileDialog fdlg new OpenFileDialog fdlg FileName Properties Settings Default Last
  • 如何使用 webpack 填充 Promise?

    我正在使用 webpack 来捆绑我的 JavaScript 我依赖于类似的模块popsicle https www npmjs com package popsicle哪个使用任何承诺 https www npmjs com packag
  • [ngModel] 和 (ngModelChange) 如何协同工作?

    我是 Angular 的新手 正在学习 Angular 6 我了解 ngModel 但当我尝试 ngModelChange 时 出现了一些问题 我有一个 html 元素 超文本标记语言
  • 在 heroku 上以沙箱模式运行 Rails 控制台

    在文档中找不到它 在SO上也找不到它 但是有没有办法在heroku Celadon Cedar 上以沙盒模式运行Rails 3 2 x 控制台 相当于 rails console sandbox 对于更 Heroku 方式 的替代方案 he
  • 使用 JQuery 和 Django 上传图像

    在继续阅读之前 请相信我 我已经阅读了有关此主题的所有其他帖子 但没有一个对您有帮助 我正在尝试向我的网站添加图像上传功能 我想上传图片 通过 ajax 帖子 我无法让这个工作 这是我所拥有的 HTML 我有一个特殊的设置 以便显示图像而不
  • 屏幕截图安全桌面

    我正在处理屏幕共享项目 我正在使用以下功能捕获桌面屏幕 它工作正常 但每当安全桌面提示提升 https learn microsoft com en us windows security threat protection securit
  • 我如何在asp.net core 2.2中实现Cookie基础身份验证和jwt?

    我想同时使用基于 cookie 的身份验证和jwt在我的程序中 使用身份验证用户来访问mvc具有登录名和 JWT 的控制器来访问 WebApi 资源 我尝试使用其中两个首先 我的客户端可以使用用户名和密码登录并通过 cookie 进行身份验
  • 运行 ng new 命令时茉莉花版本错误

    我在运行 ng new 命令时遇到错误 在 ng new Project Name Here 期间触发以下错误 无法解决依赖关系 错误同级 jasmine core gt 3 7 1 来自 电子邮件受保护 cdn cgi l email p
  • 使用 TOpenDialog 选择目录

    我真的很想知道使用 TOpenDialog 选择目录的各种方法 无论是下载新组件还是使用 Delphi 提供的内容 但最好使用 Delphi 提供的内容 在此之前 我一直在使用 SelectDirectory 命令 但我认为对于我的程序的用
  • 如何在Python中使库异步

    在我的工作中 他们 利用 龙卷风 但他们没有异步库 是什么让库变得异步 以便它更适合龙卷风之类的东西 有没有什么好的例子或者我猜你在做什么 enter or exit 这可以表明您没有阻止 我发现很难将一些材料拼凑在一起 如果您的库不是异步