我想创建一个简单的脚本来测试计算机执行它的时间。 我已经使用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)
答案 0 :(得分:4)
您可以在循环中执行任何复杂的计算问题:
其中一些问题使用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