Python 比时间更好的东西。时间()?

Python 比时间更好的东西。时间()?,python,time,soc,Python,Time,Soc,我和我的团队正在设计一个项目,该项目需要检测方波的上升沿,然后使用time.time()将时间存储在一个变量中。如果给RPi的3个不同管脚提供相同的方波,并且在每个管脚上应用事件检测,理论上,它们应该同时发生,但它们有一个延迟,这也会导致相位差(我们从时间开始计算相位)。 我们得出结论,time.time()是一个缓慢的函数。 有谁能帮我确定使用哪个函数来获得比time更精确的SOC。time()? 或者请提供函数time.time()后面的编程。 我真的很感激 time.time在支持它的平台

我和我的团队正在设计一个项目,该项目需要检测方波的上升沿,然后使用time.time()将时间存储在一个变量中。如果给RPi的3个不同管脚提供相同的方波,并且在每个管脚上应用事件检测,理论上,它们应该同时发生,但它们有一个延迟,这也会导致相位差(我们从时间开始计算相位)。 我们得出结论,time.time()是一个缓慢的函数。 有谁能帮我确定使用哪个函数来获得比time更精确的SOC。time()? 或者请提供函数time.time()后面的编程。
我真的很感激

time.time
在支持它的平台上使用
gettimeofday
。这意味着它的分辨率是微秒

您可以尝试使用
time.clock\u gettime(time.clock\u REALTIME)
提供纳秒分辨率(假设底层硬件/操作系统提供这种分辨率)。与
time.time
一样,结果仍然会转换为浮点值


还可以加载
libc
共享对象,并使用
ctypes
模块调用本机
clock\u gettime
。这样,您就可以访问操作系统提供的实际纳秒计数。(使用
ctypes
有一个相当陡峭的学习曲线。)

time.time
在支持它的平台上使用
gettimeofday
。这意味着它的分辨率是微秒

您可以尝试使用
time.clock\u gettime(time.clock\u REALTIME)
提供纳秒分辨率(假设底层硬件/操作系统提供这种分辨率)。与
time.time
一样,结果仍然会转换为浮点值



还可以加载
libc
共享对象,并使用
ctypes
模块调用本机
clock\u gettime
。这样,您就可以访问操作系统提供的实际纳秒计数。(使用
ctypes
有一个相当陡峭的学习曲线。)

我担心答案很可能是“你需要降到C”,但我不知道具体的RPi编程。如果你告诉我们你所说的“SOC”是什么意思,也会有所帮助;这不是我熟悉的TLA。@zwol芯片上的系统,我相信。@MorganThrapp在上下文中没有意义。“让芯片上的系统比时间更精确”?@zwol我的假设是他们需要SOC上的时间更精确。很难说这里到底需要什么。SOC=世纪秒。很抱歉在flow中写下这一点。我恐怕答案很可能是“您需要下拉到C”,但我并不真正了解特定于RPi的编程。如果你告诉我们你所说的“SOC”是什么意思,也会有所帮助;这不是我熟悉的TLA。@zwol芯片上的系统,我相信。@MorganThrapp在上下文中没有意义。“让芯片上的系统比时间更精确”?@zwol我的假设是他们需要SOC上的时间更精确。很难说这里到底需要什么。SOC=世纪秒。很抱歉在flow中写这篇文章。谢谢。但我无法获得您提到的“libc”功能。我在想,如果我能够访问time.time()函数的实际编程,我可以以某种方式对其进行建模。cpython(最常见的python实现)的源代码可以免费下载()。您将在
Modules/timemodule.c
中找到
time.time
函数。修改它当然是可能的,但它的学习曲线可以说比
ctypes
更陡峭。刚刚实现了一些东西。您应该尝试以下操作:
导入时间;时间。获取时钟信息(“时间”)
,它将为您提供有关
time.time
实现的信息。您可能已经在使用
clock\u gettime
,在这种情况下,您可能无法获得更好的分辨率(尽管您可以通过
ctypes
访问
libc
)避免由于整数到浮点的转换而损失精度);时间。获取时钟信息(“时间”)提供了一些关于时间的信息。时间的分辨率=0.015625。谢谢。“(虽然您可以通过libc的ctypes访问避免整数到浮点的转换导致精度损失)“对不起,我不知道您在这里说什么。我是python编程的业余爱好者,我对ctypes和libcw一无所知。我当时想到的是:--然而,回想起来,这个问题的规模对你所做的事情可能并不重要。另一方面,我建议您可以使用
ctypes
访问系统标准C库中的原始
clock\u gettime
API函数,以避免转换。现在,我觉得您的操作系统/硬件时钟分辨率太低,无法提供所需的精度。我不知道你能做些什么。谢谢。但是我不能得到你提到的“libc”东西。我在想,如果我能访问time.time()函数的实际编程,我可以以某种方式对它进行建模。cpython(最常见的python实现)的源代码可以免费下载()。您将在
Modules/timemodule.c
中找到
time.time
函数。修改它当然是可能的,但它的学习曲线可以说比
ctypes
更陡峭。刚刚实现了一些东西。您应该尝试以下操作:
导入时间;时间。获取时钟信息(“时间”)
,它将为您提供有关
time.time
实现的信息。您可能已经在使用
clock\u gettime
,在这种情况下,您可能无法获得更好的分辨率(尽管您可以通过
ctypes
访问
libc
)避免由于整数到浮点的转换而损失精度);时间。获取时钟信息(“时间”)提供了一些关于时间的信息