python 中的不同 运行 速度
Different run speeds in python
我想从 python 中的串口获取样本。但是当我 运行 代码知道它的速率时, python 给了我不同的值!通常约为每秒 24000
次。但有时它 returns 14000
。造成这种巨大差异的原因是什么?如果我想抽样 100 万我应该怎么做?
这是测试运行速度的示例代码:
import time
def g(start=0, stop=5, step=1):
while start < stop:
yield start
start += step
t1 = time.time()
t2 = t1 + 1
for item in g(10,1000000,1):
print(item)
t1 = time.time()
if t1 > t2:
break
调查 timeit
模块,它是为这样的应用程序设计的。基准必须 运行 在非常受控的条件下才能像可重复的那样。 timeit
运行 对您的代码进行多次测试,并为您提供最佳结果。通常较慢的性能表明您的计算机在执行基准测试的同时 运行 正在执行其他一些任务。
python 中的 运行 代码总是会有一些时间差异,这是因为 CPU gives
到 运行 脚本的资源。您必须尝试几次并计算平均时间。
我第一次执行时是@15000,然后是28000左右。
一般来说,结果主要取决于
- 你的CPU负载
- 缓存hit/miss
- RAM 访问时间
但在您的情况下,打印占用了大部分执行时间。所以打印到 stdout 的访问时间是你的变化的原因。
试试这个:
for item in g(10,100000000,1):
#print(item)
t1 = time.time()
if t1 > t2:
print(item) #print only the last
break
我想从 python 中的串口获取样本。但是当我 运行 代码知道它的速率时, python 给了我不同的值!通常约为每秒 24000
次。但有时它 returns 14000
。造成这种巨大差异的原因是什么?如果我想抽样 100 万我应该怎么做?
这是测试运行速度的示例代码:
import time
def g(start=0, stop=5, step=1):
while start < stop:
yield start
start += step
t1 = time.time()
t2 = t1 + 1
for item in g(10,1000000,1):
print(item)
t1 = time.time()
if t1 > t2:
break
调查 timeit
模块,它是为这样的应用程序设计的。基准必须 运行 在非常受控的条件下才能像可重复的那样。 timeit
运行 对您的代码进行多次测试,并为您提供最佳结果。通常较慢的性能表明您的计算机在执行基准测试的同时 运行 正在执行其他一些任务。
python 中的 运行 代码总是会有一些时间差异,这是因为 CPU gives
到 运行 脚本的资源。您必须尝试几次并计算平均时间。
我第一次执行时是@15000,然后是28000左右。 一般来说,结果主要取决于
- 你的CPU负载
- 缓存hit/miss
- RAM 访问时间
但在您的情况下,打印占用了大部分执行时间。所以打印到 stdout 的访问时间是你的变化的原因。
试试这个:
for item in g(10,100000000,1):
#print(item)
t1 = time.time()
if t1 > t2:
print(item) #print only the last
break