Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用简单的Python脚本测试计算机处理速度_Python_Python 3.x_Pyqt - Fatal编程技术网

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

使用简单的Python脚本测试计算机处理速度,python,python-3.x,pyqt,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.si

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

通常,您可以通过执行一些简单工作的循环来实现这一点,例如:

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

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

  • 计算一些大数字的阶乘(易于实现)
  • 计算链SHA1哈希100000次(非常容易实现)
  • 反转大矩阵(没有那么容易实现)
  • 等等

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

你们可以添加字符串,而不仅仅是在列表中添加一些元素。字符串越大,字符串连接的成本就越高,我想这应该测试你的内存性能

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.
test=“测试字符串”
对于范围内的i(您的#值):#它需要永远,所以请明智地选择此值!
如果len(test)<200000000:#在这个限制之上的某个地方,我会得到错误
测试+=测试
其他:
test=test[0:len(test)/2]#如果字符串太长,就把它剪断。

以下是我用来实现类似目标的方法

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

请记住,无论您选择什么操作,用于运行基准测试的Python版本可能是您获得计时的一个重要因素。我的意图是使用cx_freeze将其冻结,然后在Windows中运行。如果我总是使用相同的冻结包,那么计时应该继续,对吗?如果运行基准测试所需的一切都在冻结包内,那么是的。谢谢您的回答。我期待着更艰难一点的事情。也许不止一次测试,谢谢@werewindle。我特别感兴趣的功能,推动内存,但CPU也可以使用。你能给我一些例子或链接,让我了解更多关于这种特殊计算的知识吗?你可以使用numpy生成巨大的随机平方矩阵(比如10000×10000),然后计算逆矩阵。这将有效地增加CPU和内存总线的压力。其中一个读取一个大文件的所有单词并用hashlib编码,另一个迭代并计算大范围的整数。根据你的建议,使用numpy创建随机矩阵,计算它们,乘以它们,并使用我能使用的所有函数。它工作得很好,电脑花了几秒钟在上面。我还在考虑其他的测试来完成这套,但是你的建议很好,谢谢。(经过多次测试,我的电脑速度比slug慢,所以我想它真的达到了目标)。