解法二:

import time

def cpu_curve():
    busyTime = 50 # 50 ms的效果比10ms的效果要好
    idleTime = busyTime
    startTime = 0
    i = 0
    while True:
        startTime = time.time()*1000  # 得到毫秒级的时间戳
        while time.time()*1000 - startTime <= busyTime:
            i += 1
        time.sleep(busyTime/1000)

cpu_curve()

解法四:

import time
from math import sin

PI = 3.14159265
COUNT = 200 # 用200个点拟合一个周期内的曲线
SPLIT = 2*PI/COUNT # 每个点相隔距离
SIZE = 0.5
OFFSET = 0.5 # SIZE 和 OFFSET将sin(x)的值域转化为[0, 1](可以表示cpu工作时间和休息时间的时间比)
INTERVAL = 100 # 一个点占用的时间为100ms, 100ms比50ms的曲线更加平滑

def SinCurve():
    busySpan = [0 for i in range(COUNT)]
    idleSpan = [0 for i in range(COUNT)]
    radian = 0.0
    for i in range(COUNT):
        proportion = sin(radian)*SIZE + OFFSET
        busySpan[i] = INTERVAL * proportion
        idleSpan[i] = INTERVAL - busySpan[i]
        radian += SPLIT

    startTime = 0
    j = 0
    i = 0
    while True:
        j = j % COUNT
        startTime = time.time() * 1000
        while time.time()*1000 - startTime <= busySpan[j]:
            i += 1
        time.sleep(idleSpan[j]/1000);
        j+=1

SinCurve()

相关文章:

  • 2022-12-23
  • 2021-12-04
  • 2021-06-30
  • 2022-02-28
  • 2022-01-22
  • 2021-09-24
  • 2022-12-23
  • 2022-01-05
猜你喜欢
  • 2021-11-24
  • 2021-12-14
  • 2021-06-05
  • 2021-08-11
  • 2022-12-23
  • 2021-06-09
  • 2022-12-23
相关资源
相似解决方案