使用简单的 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)

原文由 jonathan.hepp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 713
2 个回答

您可以在循环中解决任何复杂的计算问题:

  • 计算一些大数的阶乘(易于实现)
  • 计算链 SHA1 哈希 100 000 次(非常容易实现)
  • 反转大矩阵(不太容易实现)
  • 等等

其中一些问题使用 CPU(阶乘,SHA1),其他一些使用 CPU 和内存(矩阵反转)。因此,首先您需要决定要对计算机的哪一部分进行基准测试。

原文由 werewindle 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是我用来实现类似目标的方法。

 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

原文由 Jeremy Whitcher 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题