- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
时间有很多种:
然后时钟可以运行得更快或更慢或者向后或向前跳跃,因为
如何处理这些问题又取决于:
那么,有人可以告诉我,对于我的具体用例,测量短间隔的最安全、最可靠方法是什么?这是我正在做的事情:
我正在使用 Python (3.7.x) 制作一个游戏,我需要跟踪自某些事件以来已经过去了多长时间。例如,玩家按住按钮的时间有多长,或者敌人发现玩家的时间有多长,或者关卡加载的时间有多长。时间刻度应该精确到毫秒(纳秒就太过分了)。
您在深夜玩游戏。在您所在的时区,当晚,夏令时凌晨 2 点时钟向前拨动一小时,因此分钟为:1:58、1:59、2:00、3:01、3:02。游戏中每个与时间相关的变量都会突然增加一个小时——它认为你按住该按钮一小时零两秒,而不是仅仅两秒。灾难随之而来。
相同,但 IERS 决定在当天的某个时间插入或减去闰秒。您玩完过渡后,所有时间变量都会增加或减少额外的一秒。灾难随之而来。
您在火车或飞机上玩游戏,当您跨越时区边界和/或国际日期变更线时,灾难就会随之而来。
在上述情况下,游戏在某些硬件和操作系统上可以正常运行,但在其他硬件和操作系统上则不能。 IE。它在 Linux 上会崩溃,但在 Window 上不会,反之亦然。
而且我无法真正为这些编写测试,因为有问题的事件很少出现。我需要第一次就做对。那么,我需要使用什么与时间相关的功能呢?我知道有简单的旧 time.time()
,但也有一系列令人眼花缭乱的其他选项,例如
time.clock()
time.perf_counter()
time.process_time()
time.monotonic()
通过阅读文档,似乎time.monotonic()
是我想要的。但如果说阅读有关计时的所有细节教会了我什么的话,那就是这些事情从来都不像它们看上去的那样。曾几何时,我以为我知道什么是“秒”。现在我不太确定了。
那么,如何确保我的游戏时钟正常工作?
最佳答案
specification of time module是查找有关这些内容的详细信息的最佳位置。
在那里,您可以轻松地看到:
time.clock()
已弃用,应替换为其他函数time.process_time()
仅计算进程所花费的 CPU 时间,因此它不适合测量挂钟时间(这正是您所需要的)time.perf_counter()
与 time.process_time()
具有相同的问题time.time()
差不多正确,但如果用户修改当前时间,它会给出错误的计时time.monotonic()
- 这似乎是测量时间间隔的最安全选择 - 请注意,这根本不会给你当前时间,但它会给你两个时间之间的正确差异点至于纳秒版本,只有在需要纳秒时才应该使用它们。
关于python - 在Python中测量短间隔最安全、最可靠的方法? (跨平台、跨硬件、抗夏令时、闰秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57645403/
我刚刚意识到二进制编译器会将源代码转换为目标平台的二进制文件。有点明显...但如果编译器以这种方式工作,那么同一个编译器如何用于不同的系统,如 x86、ARM、MIPS 等? 难道他们不应该“知道”硬
在我的 SDL 游戏中,出于游戏玩法和性能原因,我希望保留固定的游戏区域分辨率。 我想做的是有一个小分辨率(例如 320 * 240),并且在调整窗口大小时/切换到全屏模式时让 SDL/显卡缩放每个像
我正在使用这些方法来激活 SurFaceView 上的触摸焦点 private SurfaceView surfaceiew; private CameraSource camSource; priv
您好,当我从硬件菜单更改设备时,我遇到了这个奇怪的问题,但我想我可能遗漏了一些简单的东西。 我的 View Controller 中有这段代码: - (void)touchesBegan:(NSSet
编写一个名为 weird() 的函数,它将三个字符串作为参数并向后打印最长的一个。 (在平局的情况下,应该选择较早的参数字符串。 函数调用: weird("I", "Love", "Python")
您好,我正在尝试设置 hadoop 环境。简而言之,我要解决的问题涉及数十亿个大小为几 MB 的 XML 文件,使用 HIVE 从中提取相关信息,并对这些信息进行一些分析工作。我知道这在 hadoop
我知道 Phidgets,但是,我正在寻找可以与 C# 接口(interface)的一些其他类型的硬件。 谁有好东西? 最佳答案 查看 Netduino .它基于 Arduino,但使用 .Net
说一个函数(例如模乘法、正弦函数)是在硬件而不是软件中实现是什么意思? 最佳答案 在硬件中实现意味着电路(通过逻辑门等)可以执行操作。 例如,在 ALU 中,处理器在物理上能够将一个字节加到另一个字节
我需要编写一个程序,在可能状态的大空间中执行并行搜索,在此过程中发现了新区域(并开始了他们的探索),并且由于在其他地方获得的中间结果消除了可能性,因此提前终止了对某些区域的探索在其中发现新的有用结果。
我们需要通过带有硬件 token 的 EV 代码对 InstallShield 2013 Express 的安装进行签名,但是无法导出私钥证书文件,因此唯一的方法是使用 DigiCertUtil 工具
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 2 年前。 Improve this ques
我考虑从库中丢弃处理大端情况的代码,如果平台不是小端,则在初始化期间简单地抛出一个异常。如果我们限制为,我无法想象会有任何大端硬件 托管任何网站的典型服务器硬件 服务器根据开放计算项目规范 所有常见的
我知道这可以做到,但找不到交换目标调试设备的地方。我现在正在使用模拟器,但想切换到设备,反之亦然。谁能指出我正确的方向? 谢谢。 最佳答案 像这样.. 右键单击 PROJECT--->Run As--
我正在尝试创建一个监听音量键事件的服务。 每当按下音量键时,服务应向号码发送短信,但我无法检测到音量键事件。 最佳答案 您可以使用 OnKeyListener可以检测按键事件(包括音量键)。您可以找到
谁能解释一下中断如何从最低层(硬件)传递到应用程序。 所以在下图中我知道处理器之后发生了什么。 但是我想要从键盘按下到处理器的中断过程在硬件中发生了什么,例如它如何传递扫描代码,中断 Controll
我的任务是构建一个应用程序,其中业务用户将定义一些数据操作和处理规则(例如,取一个数值并将其平均分配给根据中指定的条件选择的多个记录)规则)。 每月必须运行一个批处理应用程序,以便根据定义的规则处理大
所以这是我的愚蠢问题: PGP/GPGP可以用来对文本进行签名,其他的使用公钥来验证。 比方说,非对称密码算法处理空间。 有没有什么算法可以处理时间? 例如在 2011-10-10 10:10:10
使用 nvcc 编译 CUDA 程序是否需要安装支持 CUDA 的显卡(在 Linux 中)?或者可以在任何地方编译程序并且只能在这样的系统上运行? 最佳答案 不,编译不需要显卡。 您甚至不需要一个来
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有一个奇怪的问题,但我对这个话题很感兴趣。 是否有可能直接访问当前基于 x64 的计算机的硬件,而无需使用某种 HAL(硬件抽象层)或其他操作系统(udev、upower 等)的附属物?我不是在谈论
我是一名优秀的程序员,十分优秀!