代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Python
】
cpu调度
作者:
王洪旭
/ 发布于
2014/7/7
/
791
先来先服务实现简单但是平均周转时间过长 短作业优先算法缩短了平均周转时间
#!/usr/bin/python #-*- coding: utf-8 -*- # # table # 0:进程号 1:到达时间 2:所需时间 # # pTable 先来先服务 # 0:进程号 1:开始运行时间 2:运行时间 3:周转时间 4:带权周转时间 # # qTable 短作业优先 # 0:进程号 1:开始运行时间 2:运行时间 3:周转时间 4:带权周转时间 # class Work4Ligon(object): table = [] pTable = [] qTable = [] def __init__(self): pass #输入数据 def dataIn(self): num = raw_input("请输入进程数:") num = num.strip() num = int(num) i = 1 while(i <= num): print "请输入进程 ",i,"的到达时间" a = float(raw_input()) print "请输入进程 ",i,"的运行时间" b = float(raw_input()) self.table.append([i,a,b]) i += 1 #计算先来先服务 def pTableFill(self): table = self.table time = 0 for i in xrange(len(table)): num = table[i][0] if (time > table[i][1]): startTime = time else: startTime = table[i][1] time += table[i][2] runTime = table[i][2] zj = startTime + runTime - table[i][1] dzj = zj / table[i][2] self.pTable.append([num, startTime, runTime, zj, dzj]) #计算短作业优先 def qTableFill(self): #复制一份作业列表 table = list(self.table) time = 0 for i in xrange(len(table)): minIndex = -1 minTime = 0 for j in xrange(len(table)): if (table[j][1] <= time): if (minIndex == -1): minIndex = j minTime = table[j][2] else: if (table[j][2] < minTime): minIndex = j minTime = table[j][2] num = table[minIndex][0] if (time > table[minIndex][1]): startTime = time else: startTime = table[minIndex][1] time += table[minIndex][2] runTime = table[minIndex][2] zj = startTime + runTime - table[minIndex][1] dzj = zj / table[minIndex][2] self.qTable.append([num, startTime, runTime, zj, dzj]) table.remove(table[minIndex]) #按到达时间排序 def sort(self): table = list(self.table) self.table = [] for i in xrange(len(table)): minIndex = -1 minTime = 0 for j in xrange(len(table)): if (minIndex == -1): minIndex = j minTime = table[j][1] else: if (table[j][1] < minTime): minIndex = j minTime = table[j][1] self.table.append(table[minIndex]) table.remove(table[minIndex]) def display(self): p = self.pTable q = self.qTable avg1 = 0 avg2 = 0 print '先来先服务:' print '线程号\t开始执行时间\t执行时间\t周转时间\t带权周转时间' for i in xrange(len(p)): print p[i][0],'\t',p[i][1],'\t\t',p[i][2],'\t\t',p[i][3],'\t\t',p[i][4] avg1 += p[i][3] avg2 += p[i][4] print '平均周转时间:',avg1 / len(p),'\t平均带权周转时间', avg2 / len(p) avg1 = 0 avg2 = 0 print '短作业优先:' print '线程号\t开始执行时间\t执行时间\t周转时间\t带权周转时间' for i in xrange(len(p)): print q[i][0],'\t',q[i][1],'\t\t',q[i][2],'\t\t',q[i][3],'\t\t',q[i][4] avg1 += q[i][3] avg2 += q[i][4] print '平均周转时间:',avg1 / len(p),'\t平均带权周转时间', avg2 / len(q) #开始运行 def run(self): self.dataIn() self.sort() self.qTableFill() self.pTableFill() self.display() if __name__ == '__main__': w = Work4Ligon() w.run()
试试其它关键字
cpu
调度
同语言下
.
比较两个图片的相似度
.
过urllib2获取带有中文参数的url内容
.
不下载获取远程图片的宽度和高度及文件大小
.
通过qrcode库生成二维码
.
通过httplib发送GET和POST请求
.
Django下解决小文件下载
.
遍历windows的所有窗口并输出窗口标题
.
根据窗口标题调用窗口
.
python 抓取搜狗指定公众号
.
pandas读取指定列
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
王洪旭
贡献的其它代码
(
2
)
.
cpu调度
.
内存管理
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3