编程之美中CPU运行曲线题目
2016-01-21 18:40
246 查看
在编程之美中有一道题目是将CPU的使用曲线按照要求显示,因此分析该题目的要点即是通过自己的程序控制CPU的使用率,按照要求合理的控制运算与Sleep的时间比。在这里默认特定条件下(当前CPU上只有本程序运行,其他程序运行的影响很小,可忽略不计),用Python程序实现了该程序,在电脑上执行,基本合乎要求,代码如下:
#-*- coding: utf8 -*- """ 控制CPU使用曲线 """ import timeit import time def run_cpu(): """ 消耗CPU运算时执行的程序 """ x = [_ for _ in range(RUN_RANGE_NUMBER)] def idle_cpu(): """ 保持CPU处于IDLE的Sleep程序 """ time.sleep(SLEEP_TIME) TEST_TIME_NUMBERS = 100 RUN_RANGE_NUMBER = 100000 SLEEP_TIME = timeit.timeit("run_cpu()", setup="from __main__ import run_cpu", number=TEST_TIME_NUMBERS)/TEST_TIME_NUMBERS print("测试运行100次,每次执行时间为:{}S".format(SLEEP_TIME)) def run_for_1s(percent): """ 1s中按照percent比例分别执行程序或者休眠 """ all_times = 0.33 / SLEEP_TIME cpu_times = all_times * percent / 100 for _ in range(3): for i in range(int(all_times)): if i < cpu_times: run_cpu() else: idle_cpu() def run_sin(): """ 使用sin函数 """ import math i = 0 while True: i = i + 1 use_age = 50 + math.sin(i/5)*50 run_for_1s(use_age) if __name__ == '__main__': run_sin()在本代码中使CPU的运行函数是run_cpu用的是列表生成,其实也可以使用其他的语句达成。其曲线如下:
相关文章推荐
- C语言积累2
- JAVA学习笔记02 -- 面向对象基础
- 深入理解Java中的序列化(Serializable)
- 加载spring上下文几种方式汇总
- C++学习 【3.3】 程序设计初步--选择结构和if语句
- 5-1 1593 Alignment of Code代码对齐
- 深入浅出讲解:php的socket通信
- pxe+dhcp+tftp+kickstart 实现无人值守自动安装
- JMS之Spring +activeMQ实现消息队列
- C++学习 【3.4】 程序设计初步--循环结构和循环语句
- Dubbo 与 Zookeeper SpringMVC 的整合
- Eclipse DDT
- RxJava 入门
- JAVA NIO实现服务端与客户端简单数据传输 JAVA NIO 之一
- Python中零碎知识点记录
- Red Hat5.5安装JAVA(JDK)显示的版本不对
- MNIST数据集的gist特征提取(含全部实例代码下载地址)
- java图片移动(键盘控制)
- Java中父类强制转换成子类的原则
- Java NIO使用及原理分析(三)