用简单的Python脚本测试计算机处理速度
我想写一个简单的脚本,主要是测试电脑执行这个脚本所花的时间。 我已经用PyQt搭建好了,并且用QTimer做了一个循环。现在我需要的是“让电脑忙碌”的部分。我可以用什么命令来让电脑稍微工作一下,这样我就能测出所需的时间,并和其他电脑进行比较呢?
下面是我的代码,方便你更好地理解:
self.Tempo = QtCore.QTimer(None)
self.Cron = QtCore.QTime(0,0,0,0)
def begin():
self.Cron.start()
self.Tempo.singleShot(999, update)
def update():
if self.lcdNumber.value() == 10:
finish()
else:
self.lcdNumber.display(self.lcdNumber.value()+1)
#Here I want to make some processing stuff
self.Tempo.singleShot(999, update)
def finish():
print("end")
took = self.Cron.elapsed() / 1000
print("took: {0} seconds" .format(str(took)))
self.lcdNumber_2.display(took)
6 个回答
2
通常,你可以通过一个循环来实现这个功能,这个循环会做一些简单的工作,像这样:
lst = []
for i in range(1000000):
lst.append('x')
4
这是我用来实现类似目标的方法。
from multiprocessing import Pool, cpu_count
from datetime import datetime
def stress_test(args):
cpu, value = args
start_time = datetime.now()
for i in range(value):
value = value * i
print(f"cpu: {cpu} time: {datetime.now() - start_time}")
if __name__ == '__main__':
start_time = datetime.now()
cpu_count = cpu_count()
with Pool(cpu_count) as mp_pool:
mp_pool.map(stress_test, [(cpu, 100000000) for cpu in range(cpu_count)])
print(f"total: {datetime.now() - start_time}")
结果:
cpu: 5 time: 0:00:10.336081
cpu: 4 time: 0:00:10.372854
cpu: 3 time: 0:00:10.381920
cpu: 1 time: 0:00:10.492286
cpu: 7 time: 0:00:10.384343
cpu: 2 time: 0:00:10.570987
cpu: 6 time: 0:00:10.563981
cpu: 0 time: 0:00:10.921783
total: 0:00:12.450075
6
你可以在一个循环中做任何复杂的计算问题:
- 计算一个大数字的阶乘(实现起来很简单)
- 计算链式SHA1哈希100,000次(也很简单)
- 反转一个大矩阵(实现起来就没那么简单了)
- ...
- 等等。
这些问题中,有些是用CPU来处理的(比如阶乘和SHA1),而有些则需要同时用到CPU和内存(比如矩阵反转)。所以首先你需要决定,你想测试电脑的哪个部分。