用简单的Python脚本测试计算机处理速度

7 投票
6 回答
24879 浏览
提问于 2025-04-17 07:23

我想写一个简单的脚本,主要是测试电脑执行这个脚本所花的时间。 我已经用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和内存(比如矩阵反转)。所以首先你需要决定,你想测试电脑的哪个部分。

撰写回答