asyncio 中的合作收益

2023-11-22

我正在(龙卷风)网络服务器上运行一个长时间的 CPU 密集型任务。我不想将此任务卸载到线程(目前)。在这个长时间运行的任务中,如何正确地“yield”控制事件循环,以便网络请求仍然得到服务(注意:我在这里以合作调度的方式使用“yield”,而不是在生成器的意义上使用“yield”) ,或 python 关键字yield).

我的建议是做一个await asyncio.sleep(0),但是是否可以保证这不只是作为 NOP 实现?我一直在 asyncio 库中寻找专用函数来执行此操作,但到目前为止尚未找到。

示例(python 3.5 async/await 风格):

async def long_task():
    for i in range(LARGE_NUMBER):
        do_something(i)
        if i % 100 == 0:
            await asyncio.sleep(0)

文档中没有提到,但目前asyncio.sleep(0)是执行此操作的常见方法。您可以阅读完整的讨论here。而且asyncio.sleep(0)是专门优化做工作。自从这个案例has test,我想你可能并不害怕行为。

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

asyncio 中的合作收益 的相关文章

  • 在 SSLwrapp() 之前在原始套接字上接收/发送,Python

    我想知道在包装原始套接字之前是否可以在原始套接字上接收 发送数据 我已经查看了文档并搜索了它 但找不到任何具体内容 我基本上想做的事情 client addr listeningSocket accept client recv 32 cl
  • 使用 pyspark awsglue 时显示 DataFrame

    如何使用 awsglue 的 job etl 显示 DataFrame 我尝试了下面的代码 但没有显示任何内容 df show code datasource0 glueContext create dynamic frame from c
  • Selenium 3 Firefox .click() 不起作用

    自从我升级到最新的 Selenium 版本后 我的 Firefox 驱动程序无法正常工作 未能通过搜索 Google Stack 找到答案 我希望这里有人能找到答案 我已经构建了一个页面对象模型 用于登录网页 单击管理站点并填写用户名 密码
  • 如何将 UPX 与 pyinstaller 一起使用?

    如何将 UPX 与 pyinstaller 一起使用 我正在关注文档 我已经下载了UPX 我的文件如下所示 import csv import selenium import pandas print Hello 然后我运行 pyinsta
  • 在 tkinter 和 python 中嵌套网格和框架

    我正在尝试在更大的网格结构中的框架内设置一个网格 我试图将其提炼为问题的最简单版本 from tkinter import Tk Frame Label Entry root Tk root geometry 800x800 frame1
  • 为什么实现 __iter__ 的对象不被识别为可迭代的?

    假设您使用包装对象 class IterOrNotIter def init self self f open tmp toto txt def getattr self item try return self getattribute
  • Python组合目录中的所有csv文件并按日期时间排序

    我有 2 年的每日数据分成每月文件 我想将所有这些数据合并到一个按日期和时间排序的文件中 我正在使用的代码组合了所有文件 但不按顺序 我正在使用的代码 import pandas as pd import glob os import cs
  • 找不到仅适用于数字的 Tesseract 4.0 tessdata

    正如这篇文章中所说 pytesseract 仅使用 tesseract 4 0 数字不起作用 https stackoverflow com questions 46574142 pytesseract using tesseract 4
  • = 上的语法无效? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我是 python 的初学者 试图使用 yes no 来制作一个非常简单的程序 它表示该行中的第一个 存在语法错误 if monk
  • python 3.4 计算 .txt 文件中的出现次数

    我正在为我正在上课的课程编写一个 简单 的小程序 这应该询问我要搜索哪个团队 然后返回它出现在 txt 文件列表中的次数 它像它应该的那样请求输入 并且看起来运行得很好 它现在已经运行了一个小时 我完全没有收到任何错误 它似乎陷入了循环 预
  • “WebDriverWait(驱动程序,20)”是什么意思?

    我正在使用以下 Selenium 代码 import time from selenium webdriver support ui import WebDriverWait from selenium webdriver common b
  • 在 python 中指定文件夹位置时使用 / 和 \\ 有什么区别?

    我在 Windows 10 上使用 python v3 6 当指定字符串来表示目录位置时 下面的 2 种方法有什么区别 folder location C Users username Dropbox Inv folder location
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • ipython3 笔记本垂直边距/标记线为 80 个字符

    如何使 ipython3 笔记本在 80 个字符处显示垂直边距 标记线 如何获取 ipython3 笔记本中的 i bar 位置 例如第 30 行第 56 个字符 这些功能有助于编写符合 PEP8 的代码 Spyder 中提供了这些功能 更
  • 在 Tkinter 中使用锚点

    我正在尝试对自动点唱机进行编程 但是我还处于早期阶段 并且在使用时遇到了问题anchor 这是我的代码 from tkinter import from tkinter import messagebox as box def main m
  • 为什么延迟参数会影响预测曲线?

    I put the result of Gekko s calculation into the queue after a delay write the first value of the queue to TCLab Arduino
  • Instagram 图表 api 日期之间的媒体帖子

    我正在尝试使用以下方法从我管理的 Instagram Business 个人资料中检索上个月的媒体帖子 since and until 但它似乎无法正常工作 因为 API 返回的帖子超出了我选择的时间范围 我使用以下字符串来调用 API b
  • 从终端调用时 uvicorn 不工作

    我尝试通过 pip3 在系统上安装 uvicorn 这有效 但是我无法从命令行运行相同的命令 有关如何解决此问题的任何指示 Requirement already satisfied uvicorn in home vhawk19 loca
  • 出现导入错误:无法从“随机”导入名称“随机”[重复]

    这个问题在这里已经有答案了 我在我的计算机上多次运行我的代码 但没有出现此错误 但突然间这个来了 File e Python 3 8 0 lib site packages comtypes client code cache py lin
  • 安排 Asyncio 任务每 X 秒执行一次?

    我正在尝试创建一个 python 不和谐机器人 它将每隔 X 秒检查一次活跃会员 并根据会员的在线时间奖励积分 我正在使用 asyncio 来处理聊天命令 这一切都正常 我的问题是找到一种方法来安排每隔 X 秒异步检查一次活动成员 我已经阅

随机推荐

  • Python 读取输入的最快方法

    我想读取一个包含整数列表列表的巨大文本文件 现在我正在执行以下操作 G with open test txt r as f for line in f G append list map int line split 然而 大约需要 17
  • 实时更新 Google Compute Engine 实例类型

    我想知道您是否可以将一个实例的类型更改为另一种实例 例如 n1 标准 1 到 n1 标准 2 我在文档中没有看到任何内容 但可能我错过了一些东西 如果这是不可能的 我如何处理这个问题 还有另一种方法可以进行此更改 您可以停止机器 对其进行编
  • AngularJS ngTable 按日期过滤

    我正在尝试在我的应用程序中设置 ngTable 但它不支持按日期过滤 而且我不知道如何实现它 我最初将数据中的日期作为时间戳 这使我能够由于时间戳的增量性质而对列进行正确排序 但显然我无法输入 9 月并过滤数据 Example row da
  • 两个文本文件的内连接

    希望对两个不同的文本文件执行内部联接 基本上我正在寻找与 GNU join 程序等效的内部联接 这样的事情存在吗 如果没有 则awk or sed解决方案将是最有帮助的 但我的第一选择是 Linux 命令 这是我想要做的事情的一个例子 fi
  • 在应用程序购买恢复交易中,我无法弄清楚代码

    我在我的编码中添加了应用程序内购买 它在购买时运行良好 但当我尝试在删除并再次安装应用程序时添加 Restore Transaction 代码时 它会出现错误并且应用程序关闭 我添加了以下编码 在 onCreate 我写的 startSer
  • MySQL 创建外键的语法

    创建外键时这种语法是否正确 create table department departmentID int not null auto increment primary key name varchar 30 type InnoDB c
  • .NET 中的单元测试 System.Threading.Timer

    如何在 NET中基于System Threading Timer对计时器进行单元测试 System Threading Timer有一个回调方法 您可以通过不实际创建直接依赖项来对其进行单元测试System Threading Timer
  • 使用WebService自动捕获所有未处理的异常

    我有一个 C WebService 应用程序 我想在其中捕获应用程序抛出的所有未处理的异常 我怎样才能做到这一点 由于某种原因 Web 服务不会触发 Application Error 事件 请参阅其他问题 杰夫 阿特伍德先生本人也发表了一
  • Waitress和GUnicorn大数据输入比Flask开发服务器慢很多

    问题描述 我正在尝试创建一个 Flask 应用程序 它应该 仅在本地主机上可见 因此不会降低网络速度 获取相当多的数据 30MB 作为一个大型 numpy 数组 作为输入 并输出相对较小的数据量 大约 1MB 我做了一个快速测试并使用 Fl
  • 如何在本机活动中显示软键盘

    当我尝试使用时ANativeActivity showSoftInput 它不会调出软键盘 我尝试过使用ANativeActivity showSoftInput engine gt app gt activity ANATIVEACTIV
  • 如何保留 EditText 中的换行符?

    当我显示以下内容时忽略新行 private void post String subject String message subject etSubject getText toString message etMessage getTe
  • 如何从插件中的单独 C++ 线程调用发射器回调?

    对于上下文 我从this问题 我需要在另一个线程中调用发射器的回调 我做了一个最小的例子 但它出现了段错误emit Call cb result 我的第一直觉是我对生命周期有疑问env or the emit功能 插件 cpp includ
  • jpa使用标准api延迟获取多个级别的实体

    我使用 JPA2 及其 Criteria API 从数据库中选择我的实体 该实现是 WebSphere Application Server 上的 OpenJPA 我的所有实体都是使用 Fetchtype Lazy 建模的 我从数据库中选择
  • android中访问wifi的安全异常

    请看下面的代码 wifi WifiManager getSystemService Context WIFI SERVICE if wifi isWifiEnabled false Toast makeText getApplication
  • 即使设置了包含路径,Eclipse 也找不到头文件

    这是我们已经处理了一段时间的问题 我们正在使用 Cygwin 工具链构建 C 项目 无论我们在 C 编译器中添加项目设置下的包含路径 Eclipse 似乎都找不到必要的头文件 到目前为止 我们已经完成了 Stackoverflow 社区建议
  • 启动器和发送活动的意图过滤器

    我试图让我的主要活动成为启动器活动并接收发送事件 不知怎的 我似乎无法让两者同时工作 例如 我的应用程序托盘中有启动器图标 但不在图库中的图像共享菜单中 我怎样才能让两者同时工作 使用此意图过滤器 图标位于应用程序托盘中 但不在共享菜单中
  • SQL 数据透视日期列?

    我对 SQL 相当陌生 但相信我 在发布此内容之前我已经搜索过帮助 我有一个查询 它返回分配给工作的人员列表 这些工作的长度也不同 分配给这些工作的人员的工作长度也不同 我想做的是转换类似记录的列表 唯一改变的变量是日期 以及如何旋转此数据
  • 如何在 .net 内存转储中列出正在运行的任务

    我们有一个使用异步 等待模式的复杂 ASP Net Core 应用程序 该应用程序最近停止响应 我们为其进行了内存转储 我们怀疑有一些异步操作导致应用程序卡住 但不确定是哪一个 在对 Web 应用程序进行内存转储后 我们可以看到很少有正在运
  • 我想用 python 抓取印地语(印度语言)pdf 文件

    我已经编写了Python代码 可以从PDF文件中抓取所有数据 这里的问题是 一旦被刮掉 单词就失去了语法 如何解决这些问题 我附上代码 from pdfminer pdfinterp import PDFResourceManager PD
  • asyncio 中的合作收益

    我正在 龙卷风 网络服务器上运行一个长时间的 CPU 密集型任务 我不想将此任务卸载到线程 目前 在这个长时间运行的任务中 如何正确地 yield 控制事件循环 以便网络请求仍然得到服务 注意 我在这里以合作调度的方式使用 yield 而不