• 编程之美-1.1 CPU 曲线


    解法二:

    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()
    
  • 相关阅读:
    MVVM知识库总结
    C#常用类汇总
    silverlight调用MVC WebApi方法
    IE调试方法(一)<转>
    PHP中关于超链接的拼接问题
    intval()和(int)转换使用与区别
    ThinkPHP模板(一)
    修改ThinkSNS网站入口
    js中的this和apply
    Thinkphp的Volist标签
  • 原文地址:https://www.cnblogs.com/ZeroTensor/p/10843887.html
Copyright © 2020-2023  润新知