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

时间:2011-11-30 13:47:43

标签: python python-3.x pyqt

我想创建一个简单的脚本来测试计算机执行它的时间。 我已经使用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)

4 个答案:

答案 0 :(得分:4)

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

  • 计算一些大数的因子(易于实现)
  • 计算链SHA1哈希值10万次(非常容易实现)
  • 反转大矩阵(不容易实现)
  • ...

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

答案 1 :(得分:1)

通常你可以通过一个做一些简单工作的循环来实现这一点,如下所示:

lst = []
for i in range(1000000):
    lst.append('x')

答案 2 :(得分:1)

您可以添加字符串,而不只是将某些元素附加到列表中。字符串连接越大越好,字符串越大,我猜测它应该测试你的内存性能。

test = "a test string"
for i in range(your_value):        # it takes forever, so choose this value wisely!
    if len(test) < 200000000:      # somewhere above this limit I get errors
        test += test
    else:
        test = test[0:len(test)/2] # if the string gets too long just cut it.

答案 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