我目前正在编写涉及将数据从 C 程序传输到 Python 程序的代码。这要求它们都具有完全相同的 time
整数值。我获取时间的方法是:
C 语言的时间(0)
int(time.time())
对于 Python
但是,我的输出不一致,导致我相信这不会产生相同的值。 C 程序运行时间 < 0.001 秒,同时:
time ./cprog | python pythonprog.py
给出的时间通常如下所示:
real 0m0.043s user 0m0.052s sys 0m0.149s
大约每 5 次运行中有一次会产生预期输出。我可以使其更加一致吗?
最佳答案
不是解决方案 - 而是解释。
启动 python(或其他解释/VM 语言)时,通常会产生与读取和解析所需的许多模块相关的启动成本。即使像“print 5”这样的小型 Python 程序也会执行大量 IO。
启动成本将延迟当前时间的初始查找。
从 strace 输出来看,调用 python 代码将导致 >200 个开放调用、~ (f)stat、>20 个 mmap 调用等。
strace -c python prog.py
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
31.34 0.000293 1 244 178 openat
9.84 0.000092 1 100 fstat
9.20 0.000086 1 90 60 stat
8.98 0.000084 1 68 rt_sigaction
7.81 0.000073 1 66 close
2.14 0.000020 2 9 brk
1.82 0.000017 9 2 munmap
1.39 0.000013 1 26 mmap
1.18 0.000011 2 5 lstat
...
关于python - 保证与 Python 程序同时启动的 C 程序将具有相同的整数时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59603946/