time.time() 无法在 Cython 中运行 while 循环预定时间

2023-11-21

我有一个 Python 模块,其中包含一个 while 循环,该循环应该运行固定的时间。我通过向 time.time() 的输出添加一个常量并运行直到 time.time() 大于该变量来完成此操作。这没有出现任何问题,但同样的事情在 Cython 中对我不起作用。现在我的时间安排严重偏离了。

仅举一个最小的例子来证明这一点:

import time

cdef float wait_time = 3

def slow():
    cdef float end_time = time.time() + wait_time

    while time.time() < end_time:
        pass
    print("Done")
%timeit -r1 -n1 slow()
Done
44.2 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
35.5 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
35.5 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
19.5 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
35.5 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
20.6 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
20 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
56 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
1min 3s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
32.9 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
1min 5s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

这种情况往往遵循的一般行为是,基本上不会有等待,除非在运行函数之前暂停一段时间,在这种情况下,会出现过度等待。


蟒蛇的float is C’s double. C’s float 通常有只有 24 个有效位(其中一位是隐式的),使其精度为 128 秒(自 2004 年起)。当您的加法从向下舍入变为向上舍入时,它会从过去一分钟变为未来一分钟的值。

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

time.time() 无法在 Cython 中运行 while 循环预定时间 的相关文章

  • 如何删除django中级联的一对一相关模型?

    背景 我在 Django 1 8 5 中定义了以下模型 class PublishInfo models Model pass class Book models Model info models OneToOneField Publis
  • Python 中的字节数组

    如何在 Python 中表示字节数组 如 Java 中的 byte 我需要用 gevent 通过网络发送它 byte key 0x13 0x00 0x00 0x00 0x08 0x00 在Python 3中 我们使用bytes对象 也称为s
  • 如何将base64字符串直接解码为二进制音频格式

    音频文件通过 API 发送给我们 该文件是 Base64 编码的 PCM 格式 我需要将其转换为 PCM 然后再转换为 WAV 进行处理 我能够使用以下代码解码 gt 保存到 pcm gt 从 pcm 读取 gt 保存为 wav decod
  • Python有条件求解时滞微分方程

    我在用dde23 of pydelay包来求解延迟微分方程 我的问题 如何有条件地编写方程 例如目标方程有两个选项 when x gt 1 dx dt 0 25 x t tau 1 0 pow x t tau 10 0 0 1 x othe
  • Kivy - 文本换行工作错误

    我正在尝试在 Kivy 1 8 0 应用程序中换行文本 当没有太多文字时 一切正常 但如果文本很长并且窗口不是很大 它只是剪切文本 这是示例代码 vbox BoxLayout orientation vertical size hint y
  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • TF map_fn 或 while_loop 用于不同形状的张量列表

    我想处理不同形状的张量序列 列表 并输出另一个张量列表 考虑每个时间戳上具有不同隐藏状态大小的 RNN 就像是 输入 tf ones 1 2 2 tf ones 2 2 3 tf ones 3 2 1 输出 tf zeros 1 2 4 t
  • 如何在 PyCharm 4.5.2 中使用 PyPy 作为标准/默认解释器?

    如何在 PyCharm 4 5 2 中使用 PyPy 作为标准 默认解释器 一切都在 Ubunutu 14 10 下运行 并且 pypy 已经安装 您可以在项目的设置下进行配置 这个官方文档直接涵盖了 https www jetbrains
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • 更改 python tkinter canvas 中的线坐标

    我画了一条线tkinter Canvas现在我想移动一端 这可能吗 例如和itemconfig import tkinter tk tkinter Tk canvas tkinter Canvas tk canvas pack line c
  • Python Fabric - 未找到主机。请指定用于连接的(单个)主机字符串:

    如何获取 找不到主机 请指定用于连接的 单个 主机字符串 面料如何解决 def bootstrap host ec2 54 xxx xxx xxx compute 1 amazonaws com env hosts host env use
  • 使用 scipy curve_fit 拟合噪声指数的建议?

    我正在尝试拟合通常按以下方式建模的数据 def fit eq x a b c d e return a 1 np exp x b c np exp x d e x np arange 0 100 0 001 y fit eq x 1 1 1
  • Apache Spark 中的高效字符串匹配

    我使用 OCR 工具从屏幕截图中提取文本 每个大约 1 5 句话 然而 当手动验证提取的文本时 我注意到时不时会出现一些错误 鉴于文本 你好 我真的很喜欢 Spark 我注意到 1 像 I 和 l 这样的字母被 替换 2 表情符号未被正确提
  • 在Python中计算内存碎片

    我有一个长时间运行的进程 不断分配和释放对象 尽管正在释放对象 但 RSS 内存使用量会随着时间的推移而增加 如何计算发生了多少碎片 一种可能性是计算 RSS sum of allocations 并将其作为指标 即便如此 我该如何计算分母
  • django-admin.py makemessages 不起作用

    我正在尝试翻译一个字符串 load i18n trans Well Hello there how are you to Hola amigo que tal 我的 settings py 文件有这样的内容 LOCALE PATHS os
  • 将文本注释到轴并对齐为圆

    我正在尝试在轴上绘制文本并将该文本与圆对齐 更准确地说 有一些具有不同坐标 x y 的点位于该圆内 并使用以下命令创建 ax scatter x y s 100 我想用圆圈连接并标记每个点 Cnameb 文本的坐标由 xp yp 定义 因此
  • 由于 json 字符串化 dict 键导致数据丢失

    考虑下面的例子 gt gt gt import json gt gt gt d 0 potato 0 spud gt gt gt json dumps d 0 potato 0 spud gt gt gt json loads json d
  • 如何使用 Keras ImageDataGenerator 预测单个图像?

    我已经训练 CNN 对图像进行 3 类分类 在训练模型时 我使用 keras 的 ImageDataGenerator 类对图像应用预处理功能并重新缩放它 现在我的网络在测试集上训练得非常准确 但我不知道如何在单图像预测上应用预处理功能 如
  • 如何为所有用户安装 Anaconda python?

    Anaconda python 发行版 https store continuum io cshop anaconda 非常方便地部署科学计算环境 SCE 并根据需要切换python版本 默认情况下 安装会将 python 定位到 anac
  • 缓存 Flask-登录 user_loader

    我有这个 login manager user loader def load user id None return User query get id 在我引入 Flask Principal 之前它运行得很好 identity loa

随机推荐

  • 使用 Google Maps JavaScript API 绘制轮廓和阴影区域

    Google 地图网络应用程序以非常漂亮的方式对区域进行地理编码和勾画 这可以通过 Google Maps JavaScript API 实现吗 网站示例 这是瑞典斯科讷省 谷歌地图网络应用程序用红色勾勒出它的轮廓 并把它涂成粉红色 我想使
  • 在Python中查找包含所需字符串的目录中的文件

    我试图在目录中包含的文件中查找字符串 我有一个像这样的字符串banana我知道它存在于一些文件中 import os import sys user input input What is the name of you directory
  • JSF 同时 ajax 调用

    JSF 是否可以进行同时执行的 ajax 调用 无需等待先前的调用完成后再开始新的调用 不 它们按照规范显式排队 没有任何例外 参见第 13 3 2 章JSF 2 规范 13 3 2 Ajax 请求排队 所有 Ajax 请求在发送到客户端之
  • 动态添加/删除输入时清除输入值[重复]

    这个问题在这里已经有答案了 我有输入元素 单击按钮时可以清除值 此输入还可以动态添加或删除输入元素 但我坚持添加输入元素后 清除按钮不起作用 这是我到目前为止尝试过的 ADD Remove input var counter 1 custo
  • MVC 5 访问声明身份用户数据

    我正在开发一个MVC 5网络应用程序使用实体框架 5 数据库优先方法 我在用OWIN用于用户的身份验证 下面显示了我的帐户控制器中的登录方法 public ActionResult Login LoginViewModel model st
  • Angular 包是如何构建的

    Angular 构建生成了哪些不同的文件 我注意到其中有 6 个 main js polyfill js runtime js scripts js vendor js styles js 我想 Angular 使用webpack进行构建
  • invokeAll() 是 java 7 中的阻塞调用

    ExecutorService executorService Executors newSingleThreadExecutor Set
  • HTML5 FormData 在 Java Servlet request.getParameter() 中返回 null

    我的观点是 HTML 5 我正在使用 FormData 向 Servlet 发送 AJAX 2 POST 在 servlet 内部 我试图读取请求参数 我看不到任何参数 但是 Google Chrome 开发控制台会显示请求负载 如何在 S
  • 导入在 Colab 中与您共享/由您共享的 Google 云端硬盘文件

    相当明显的是 这simplest推荐的方式还提供了最简单的 API 用于从驱动器文件夹中读取文件 from google colab import drive drive mount content gdrive 不允许访问 Google
  • 引用可能比指针更有效吗?

    我想知道有时 取决于平台或编译器或代码中的上下文等 引用是否比指针更有效 引用可能比指针更有效吗 不 不必要 标准也没有这么说 大多数编译器通过使用指针来实现引用机制 添加了对 C 的引用以支持运算符重载而不是为了效率
  • 为什么我必须使用[ProtoIninclude]?

    我读过很多关于 protobuf net 继承功能的问题 我只是想知道是否可以像使用 ProtoContract ProtoMember 一样使用 DataContract DataMember 为什么我不能使用 KnowType 而不是使
  • 意外的观察:数组的 var_dump() 正在标记引用的元素...从什么时候开始?

    我刚刚对数组运行了一些简单的调试测试 并注意到当我对数组执行 var dump 时 输出会标记数组中由另一个变量引用的任何元素 作为一个简单的实验 我运行了以下代码 array range 1 4 var dump array echo b
  • UItableView 在滚动时加载数据

    在我的应用程序中 我从网络服务获取数据 并且必须在 UITableView 中显示它 但这里的条件是我最初只能显示 10 条记录 然后一旦用户向下滚动我就必须加载更多记录 我尝试搜索它但没有得到任何有用的答案 我同意我将使用 void ta
  • 直接索引 numpy 数组的时间复杂度是多少

    我假设当有一个 numpy 数组时 比方说 gt gt gt gt nArray array 23425 521331 40625 23465 521246 03125 23505 528602 8125 23545 531934 75 2
  • 为什么 print 函数返回 None?

    为什么外层print在此代码中显示None gt gt gt a print print Python Python None gt gt gt print type a
  • 在 iPhone SDK 中创建自定义活动指示器?

    我还没有找到任何使用自定义活动指示器的应用程序 将是老式的动画 GIF 来代替 Apple 提供的旋转轮 是否有工具可以做到这一点 或子类 UIActivityIndi catorView 开发人员是否滚动自己的 UIView 或者这是否违
  • 具有代码完成功能的最小 PHP IDE? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有很多小型编辑器 例如 Notepad vim 和 SciTE 但它们一次只能处理一个文件 换句话说 他们不知道代码库的整个范围 另一方面 我见过的
  • 使用 fputcsv 从多维数组创建 CSV

    我正在尝试将多维数组放入 csv 文件中 数组中的数据是这样的 Array 0 gt Array product id gt 1111 name gt Alcatel One Touch Idol 2 keyword gt alcatel
  • C++11 的 std::string 的底层表示形式是否保证具有终止空字符? [复制]

    这个问题在这里已经有答案了 首先摘录一些标准 规格string operator const reference 运算符 size type pos const 引用运算符 size type pos Requires pos Return
  • time.time() 无法在 Cython 中运行 while 循环预定时间

    我有一个 Python 模块 其中包含一个 while 循环 该循环应该运行固定的时间 我通过向 time time 的输出添加一个常量并运行直到 time time 大于该变量来完成此操作 这没有出现任何问题 但同样的事情在 Cython