我进行了一个实验来比较 python 和 C++ 中的睡眠/暂停时间准确性
实验总结:
在 1000000 次迭代的循环中,每次迭代睡眠 1 微秒。
预期持续时间: 1.000000 秒(对于 100% 准确的程序)
在蟒蛇中:
import pause
import datetime
start = time.time()
dt = datetime.datetime.now()
for i in range(1000000):
dt += datetime.timedelta(microseconds=1)
pause.until(dt)
end = time.time()
print(end - start)
预期: 1.000000 秒,实际(大约): 2.603796
在 C++ 中:
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
using usec = std::chrono::microseconds;
using datetime = chrono::_V2::steady_clock::time_point;
using clk = chrono::_V2::steady_clock;
int main()
{
datetime dt;
usec timedelta = static_cast<usec>(1);
dt = clk::now();
const auto start = dt;
for(int i=0; i < 1000000; ++i) {
dt += timedelta;
this_thread::sleep_until(dt);
}
const auto end = clk::now();
chrono::duration<double> elapsed_seconds = end - start;
cout << elapsed_seconds.count();
return 0;
}
预期: 1.000000 秒,实际(大约): 1.000040
很明显C++要准确得多,但是我正在用python开发一个项目,需要提高准确性。有任何想法吗?
PS如果你建议另一个python库/技术也没关系,只要它更准确:)