相关疑难解决方法(0)

如何在Python中延迟时间?

我想知道如何在Python脚本中加时间延迟.

python sleep timedelay delay

2638
推荐指数
12
解决办法
288万
查看次数

为什么在C++中读取stdin的行比Python要慢得多?

我想比较使用Python和C++从stdin读取字符串的读取行,并且看到我的C++代码运行速度比等效的Python代码慢一个数量级,这让我很震惊.由于我的C++生锈了,我还不是专家Pythonista,请告诉我,如果我做错了什么或者我是否误解了什么.


(TLDR回答:包括声明:cin.sync_with_stdio(false)或者只是fgets改用.

TLDR结果:一直向下滚动到我的问题的底部并查看表格.)


C++代码:

#include <iostream>
#include <time.h>

using namespace std;

int main() {
    string input_line;
    long line_count = 0;
    time_t start = time(NULL);
    int sec;
    int lps;

    while (cin) {
        getline(cin, input_line);
        if (!cin.eof())
            line_count++;
    };

    sec = (int) time(NULL) - start;
    cerr << "Read " << line_count << " lines in " << sec << " seconds.";
    if (sec > 0) {
        lps = line_count / sec;
        cerr << " LPS: " << lps …
Run Code Online (Sandbox Code Playgroud)

c++ python benchmarking iostream getline

1738
推荐指数
10
解决办法
25万
查看次数

我如何获得Python程序的执行时间?

我在Python中有一个命令行程序需要一段时间才能完成.我想知道完成跑步所需的确切时间.

我看过这个timeit模块,但它似乎只适用于小代码片段.我想要整个计划的时间.

python time

831
推荐指数
30
解决办法
94万
查看次数

获取Python中的当前时间(以毫秒为单位)?

如何在Python中获取当前时间(以毫秒为单位)?

python time datetime

468
推荐指数
13
解决办法
66万
查看次数

如何在python中获得单调持续时间?

我想记录真实壁挂时间有多长.目前我这样做:

startTime = time.time()
someSQLOrSomething()
print "That took %.3f seconds" % (time.time() - startTime)
Run Code Online (Sandbox Code Playgroud)

但是如果在SQL查询(或其他任何东西)运行时调整时间,则会失败(产生不正确的结果).

我不想只是对它进行基准测试.我想在实时应用程序中记录它,以便查看实时系统的趋势.

我想要像clock_gettime(CLOCK_MONOTONIC,...)这样的东西,但是在Python中.并且最好不必编写调用clock_gettime()的C模块.

python linux benchmarking clock

55
推荐指数
3
解决办法
2万
查看次数

Python中的高精度时钟

有没有办法在Python中以高精度测量时间---比一秒更精确?我怀疑是否有跨平台的方式来做到这一点; 我对Unix上的高精度时间感兴趣,特别是在Sun SPARC机器上运行的Solaris.

timeit似乎能够进行高精度的时间测量,但我不想测量代码片段需要多长时间,而是想直接访问时间值.

python time

45
推荐指数
7
解决办法
8万
查看次数

以微秒为单位获取C的时间戳?

如何在C中获得微秒时间戳?

我正在尝试:

struct timeval tv;
gettimeofday(&tv,NULL);
return tv.tv_usec;
Run Code Online (Sandbox Code Playgroud)

但是这会返回一些无意义的值,如果我得到两个时间戳,第二个可以比第一个更小或更大(第二个应该总是更大).是否可以将gettimeofday返回的魔术整数转换为可以实际使用的正常数字?

c time

41
推荐指数
5
解决办法
12万
查看次数

用C++获得准确的执行时间(微秒)

我希望在用C++实现的程序的微秒内获得准确的执行时间.我试图用clock_t获得执行时间,但这不准确.

c++ performance

30
推荐指数
3
解决办法
4万
查看次数

Python日志记录中准确的时间戳

我最近一直在构建一个错误记录应用程序,并且正在为一种准确的时间戳记输入数据.当我准确地说我的意思是每个时间戳应该相对于彼此准确(不需要同步到原子钟或类似的东西).

我一直在使用datetime.now()作为第一次尝试,但这并不完美:

>>> for i in range(0,1000):
...     datetime.datetime.now()
...
datetime.datetime(2008, 10, 1, 13, 17, 27, 562000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 562000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 562000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 562000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 578000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 578000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 578000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 578000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 578000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 609000) …
Run Code Online (Sandbox Code Playgroud)

python logging timestamp timer

12
推荐指数
3
解决办法
9107
查看次数

Python中的微秒准确时间戳?

在将Python日期时间转换为时间戳时,有没有办法保持微秒精度?

>>> import datetime
>>> d1 = datetime.datetime(2013,7,31,9,13,8,829)
>>> import time
>>> d1_ts = time.mktime(d1.timetuple())
>>> d1
datetime.datetime(2013, 7, 31, 9, 13, 8, 829)
>>> d1_ts
1375279988.0
>>> d1.fromtimestamp(d1_ts)
datetime.datetime(2013, 7, 31, 9, 13, 8)
Run Code Online (Sandbox Code Playgroud)

.829在转换时输了.这是非常重要的,因为我有一个开始和结束时间戳,我需要以设定的间隔(使用亚秒级)逐步完成,以从一些传感器收集数据.

最终它将用于类似于此的函数:

from scipy import arange
sample_time = 0.02
for i in arange(d1_ts, d2_ts, sample_time):
    # do stuff
Run Code Online (Sandbox Code Playgroud)

如果sample_time这么小,那么mircoseconds很重要.

python timestamp

6
推荐指数
1
解决办法
9215
查看次数

如何每1 ms发送一次UDP数据包?

我需要编写一个定期发送UDP数据包的Linux应用程序.理想情况下,频率应为每1 ms,数据包之间的间隔应保持一致.

我试过这样通过普通的套接字来做到这一点:

while(counter < 4294967295)
{
    for (k=0; k<4; k++) //Convert counter value to string
    {
        buf[k]=((unsigned char*)(&counter))[k];
    }
    sn = sendto(sender, &buf, sizeof(buf), 0, (struct sockaddr *)&srv_addr, sizeof(srv_addr)); // Sending UDP segment
    if (sn < 0 ) error("UDP send fail!"); //Error handle
    counter++;

    nanosleep(&delay, NULL); //Sleep
}
Run Code Online (Sandbox Code Playgroud)

在上面的应用程序中,我只用一个计数器值填充UDP数据包,所以我可以在接收器的末端区分它们.

基本上这个代码确实起到了作用,但是存在以下问题:1.频率不够高,受主机性能和其他应用的影响很大.2.数据包间隔不一致,因为有RTC用作参考.但是,如果我尝试进行RTC检查,那使得数据包速率更慢.

我认为应该以更优雅的方式用不同的方法实现我的目标.请提出建议.

c sockets linux udp

6
推荐指数
1
解决办法
4677
查看次数

win32上的python:如何获得绝对时间/ CPU周期数

我有一个python脚本调用基于USB的数据采集C#dotnet可执行文件.主要的python脚本做了许多其他的事情,例如它控制步进电机.我们想检查各种操作的相对时间,为此目的,dotnet exe生成一个带有来自C#Stopwatch.GetTimestamp()的时间戳的日志,据我所知,它产生与调用win32 API QueryPerformanceCounter()相同的数字.

现在我想从python脚本中获得类似的数字.time.clock()返回这样的值,不幸的是它将第一次调用时获得的值减去time.clock().我怎么能绕过这个?从一些现有的python模块调用QueryPerformanceCounter()是否容易,或者我是否必须在C中编写自己的python扩展?

我忘了提及,Tim Golden的python WMI模块做到了这一点:wmi.WMI().Win32_PerfRawData_PerfOS_System()[0] .Timestamp_PerfTime,但它太慢了,开销大约48ms.我需要一些<= 1ms的开销.time.clock()似乎足够快,就像c#Stopwatch.GetTimestamp()一样.

TIA,Radim

python api winapi performancecounter

4
推荐指数
1
解决办法
1622
查看次数

从没有中断引脚的传感器读取数据的最佳方法,该措施需要一段时间才能准备好

我正在尝试将压力传感器(MS5803-14BA)与我的电路板(NUCLEO-STM32L073RZ)连接。

根据数据表(第3页),压力传感器需要几毫秒的时间才能准备好读取测量值。对于我的项目,我对转换原始数据大约需要10 ms的最高分辨率感兴趣。

不幸的是,该压力传感器没有任何可用于查看测量准备就绪时间的中断引脚,因此,我暂时解决了在请求新数据后延迟的问题。

我不喜欢当前的解决方案,因为在这10毫秒内,我可以让单片机工作在其他地方(我的板上还连接了其他几个传感器),但是没有任何中断引脚,我不确定这是什么。解决此问题的最佳方法。

我想到了另一个解决方案:使用计时器,该计时器每20秒触发一次,并执行以下操作:

1.a Read the current value stored in the registers (discarding the first value)
1.b Ask for a new value
Run Code Online (Sandbox Code Playgroud)

这样,在下一次迭代中,我只需要读取上一次迭代结束时请求的值即可。

我不喜欢我的测量结果总是20毫秒。直到延迟保持20毫秒,它应该还是可以的,但是如果我需要降低速率,则解决方案的读数“老化”会增加。

您对如何处理还有其他想法吗?

谢谢。

注意:如果您需要查看我当前的实现,请告诉我。

c interrupt stm32 multitasking pressure

2
推荐指数
1
解决办法
665
查看次数