2017-02-20 78 views
-1

我一直在研究一个项目,在该项目中,我需要创建一个Python应用程序,在此阶段浪费指令&周期。通常当“周期性浪费”意味着等待或睡眠;但我想用不同的方式来做。即使外部程序循环的迭代周期非常高,也应该有一些浪费周期的伪指令。使用Python实际任意指令浪费周期

为例(做典型方式):

while(True): 
    #..do simple thing.. 
    time.sleep(0.000001) 

我想要做什么:

while(True): 
    #..do complex instructions.. 
    time.sleep(0.2) 

随着第一个“典型”的例子我能实现定制CPU负载例如通过简单地调整睡眠时间来达到25%或100%。我希望能够对第二个代码执行相同的操作,其中时间段是一个相当高的值并且是不变的,但指令是复杂且动态的。

请记住,我必须将其作为Python应用程序来执行,而不是从shell运行的bash脚本。

有没有办法做到这一点?任何帮助将非常感激。

在此先感谢。

备注:如果有错误标签,我表示歉意。

编辑:使用Python 2.7

编辑:该应用程序需要,应该有一个周期性睡如time.sleep(2),time.sleep(0.2)。这是我们的限制。

+0

这是哪个python版本? 2.7或3.x? –

+0

嗨,我在Linux上使用Python 2.7 – mozcelikors

+1

矩阵乘法是相当CPU密集型,也许你可以生成两个不同大小的随机矩阵,并乘以它们? –

回答

1

没有想到最好的方法,只是试了一下,它的100%CPU在我的笔记本电脑i5上。 我去随机矩阵生成和产品:

def cpu_load(): 
    import numpy as np 
    while True: 
    a = np.random.random([1000, 1000]) 
    b = np.random.random([1000, 1000]) 
    c = np.mean(a*b) 
+0

您可以在下面添加time.sleep(0.2)并再试一次。因为当没有延迟时,显然是100%。 – mozcelikors

+0

我真的不明白你的意思。具有睡眠的代码甚至可以达到100%的负载?你想要什么样的负载? – pltrdy

+0

我不希望它完全达到100%,但至少可以像50%。 如果你打印“你好”没有睡觉,那也将达到100%。那不是我想要的。 – mozcelikors

0

如果我正确理解你的问题,以及建设进一步经pltrdy的代码,我想你想是这样的:

def cpu_load(treshold): 
    import numpy as np 
    import time 
    start = time.time() 
    while time.time() - start < treshold: 
     a = np.random.random([1000, 1000]) 
     b = np.random.random([1000, 1000]) 
     c = np.mean(a*b) 
+0

我会尽快尝试。谢谢。 – mozcelikors

-1

如果您在Linux系统上,你可以这样做。

import os 
os.nice(20) 

这会增加过程的好处。因此减少CPU消耗。

Here是文档。