iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现调度算法代码详解
  • 454
分享到

Python实现调度算法代码详解

算法详解代码 2022-06-04 19:06:41 454人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

调度算法 操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源。这就是调度。目的是控制资源使用者的数量,选取资源

调度算法

操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源。这就是调度。目的是控制资源使用者的数量,选取资源使用者许可占用资源或占用资源。

在操作系统中调度是指一种资源分配,因而调度算法是指:根据系统的资源分配策略所规定的资源分配算法。对于不同的的系统和系统目标,通常采用不同的调度算法,例如,在批处理系统中,为了照顾为数众多的段作业,应采用短作业优先的调度算法;又如在分时系统中,为了保证系统具有合理的响应时间,应当采用轮转法进行调度。目前存在的多种调度算法中,有的算法适用于作业调度,有的算法适用于进程调度;但也有些调度算法既可以用于作业调度,也可以用于进程调度。

目标阐述:

将中缀表达式转换为后缀表达式(Reverse Polish Notation:RPN 逆波兰式)
参与运算的数据的正则表示为:[0-9]{1,}形式的十进制数


运算符优先级:(从高到低)————————————————————————
( )   括号
/ * %  除乘余
+ -   加减————————————————————————

解:

第一步:使用正则词法分析器flex生成一个词法分析器,以处理输入的中缀表达式。
从stdin接收输入,检测非法字符,并将处理后的中缀表达式输出到stdout。


%option noyywrap
%{
#include<stdio.h>
#include<stdlib.h>%}

%%
[0-9]+ { printf("%s ",yytext); }
[()*/%+-] { printf("%s ",yytext); }
[[:space:]] {}
. { printf("nErrorn");exit(1); }
%%

int main()
{
 yylex();
 printf("n");
 return 0;
}

第二步:使用python进行转换。

从stdin接收一定格式的中缀表达式字符流,检测是否在词法分析器处理过程中出错,然后使用调度场算法处理数据,得到rpn列表。


import sys

line=sys.stdin.readline()
line2=sys.stdin.readline()

if len(line2)>0:
 sys.stderr.write("Syntax Error after : ")
 sys.stderr.write(line)
 sys.stderr.write("n")
 exit(1)

lis=line.split(' ')
lis.pop()
lis_old=lis[:]
lis.reverse()

oplis=[]
rpnlis=[]
str=''
arith_op="+-*/%" # '(' ')' [0-9]+
prior={ '/':1,'*':1,'%':1, '+':2,'-':2 }

while len(lis)>0:
  str=lis.pop()
  if str=='(':
    oplis.append('(')
  elif str.isdigit():
    rpnlis.append(str)
  elif len(str)==1 and arith_op.find(str[0])!=-1:
    if len(oplis)==0 or oplis[len(oplis)-1]=='(':
      oplis.append(str)
    else:
      while len(oplis)>0 and oplis[len(oplis)-1]!='(' 
               and prior[oplis[len(oplis)-1]]<=prior[str]:
        rpnlis.append(oplis.pop())
      oplis.append(str)
  elif str==')':
    while len(oplis)>0 and oplis[len(oplis)-1]!='(':
      rpnlis.append(oplis.pop())
    if len(oplis)>0:
         oplis.pop()
        else:
         sys.stderr.write("Syntax Error while translating : Expected '('")
         sys.stderr.write("n")
         exit(2)
    else:
     sys.stderr.write("Syntax Error : unkown notation -->")
     sys.stderr.write(str)
     sys.stderr.write("n")
     exit(3)
while len(oplis)>0 :
  if oplis[len(oplis)-1]!='(':
     rpnlis.append(oplis.pop())
    else:
     sys.stderr.write("Syntax Error while translating : Unexpected '('")
     sys.stderr.write("n")
     exit(1)

print lis_old
for i in lis_old:
  sys.stdout.write(i)
print ''
print rpnlis
for i in rpnlis:
  print i,
print ''

exit(0)

实验结果:

查看图片

目前程序的局限:
未进行语法检测。
不支持函数、变量标识。

附录:

查看图片

算法示意图,使用了3个空间。输入用符号代替,如果输入是一个数字则直接进输出队列,即图中 b),d),f),h)。如果输入是运算符,则压入操作符堆栈,即图中 c),e),但是,如果输入运算符的优先级低于或等于运算符栈顶的操作符优先级,则栈内元素进入输出队列(循环判定),输入操作符压入运算符堆栈,即图中 g)。 最后,运算符堆栈内元素入输出队列,算法结束。

查看图片

附录中资料摘自维基百科•调度场算法词条。

总结

以上就是本文关于Python实现调度算法代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出!

--结束END--

本文标题: Python实现调度算法代码详解

本文链接: https://www.lsjlt.com/news/15801.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python代码实现粒子群算法图文详解
    目录1.引言2.算法的具体描述:2.1原理2.2标准粒子群算法流程3.代码案例3.1问题3.2绘图 3.3计算适应度3.4更新速度3.5更新粒子位置3.6主要算法过程结果总...
    99+
    2024-04-02
  • 如何实现Python调用Golang代码详解
    1.调用编译后的动态库文件,报头文件错误 原因: 不同平台下编译的add.so 不能通用,Windows下可以运行的so文件,linux下就不能运行,需要重新编译linux的so文件...
    99+
    2023-05-20
    Python调用golang方法 Python调用golang代码
  • Python 分形算法代码详解
    目录1. 前言什么是分形算法?2. 分形算法2.1 科赫雪花2.2 康托三分集2.3 谢尔宾斯基三角形2.4 分形树3. 总结1. 前言 分形几何是几何数学中的一个分支,也称大自然几...
    99+
    2024-04-02
  • t-SNE算法的原理和Python代码实现详解
    T分布随机邻域嵌入(t-SNE),是一种用于可视化的无监督机器学习算法,使用非线性降维技术,根据数据点与特征的相似性,试图最小化高维和低维空间中这些条件概率(或相似性)之间的差异,以在低维空间中完美表示数据点。 因此,t-SN...
    99+
    2024-01-23
    算法的概念
  • matlab鸟群算法求解车间调度问题详解及实现源码
    目录一、车间调度简介1 车间调度定义2 传统作业车间调度3 柔性作业车间调度二、蝴蝶优化算法(MBO)简介1 介绍2 香味3 具体算法三、部分源代码五、matlab版本及参考文献一、...
    99+
    2024-04-02
  • python实现语音常用度量方法的代码详解
    语音信号处理一般都要进行主观评价实验和客观评价实验。 主观评价:邀请测听者对语音进行测听,给出主观意见得分 客观评价:根据算法来衡量语音质量 主观投票受多种因素影...
    99+
    2024-04-02
  • Python实现印章代码的算法解析
    目录1.题目2.代码3.代码解析1.题目 2.代码 #共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 n,m=map(int,input(...
    99+
    2024-04-02
  • Python实现调用jar或执行java代码的方法详解
    目录简介安装jpypejava 代码python 调用代码简介 Python 作为一种灵活的软件开发语言在当今被广泛使用。在软件开发过程中,有时需要在 Python 项目中利用既有的...
    99+
    2022-12-21
    Python调用jar Python 执行Java代码 Python jar
  • 用C语言递归实现火车调度算法详解
    目录1、代码2、代码详解3、用二叉树表示调用过程4、思维导图笔者在李云清版的《数据结构》中第二章遇到了这道经典的火车调度题,经过对一些前辈的代码进行学习,以下将这段火车代码进行分析详...
    99+
    2024-04-02
  • 用代码模拟操作系统进程调度算法(Python)
     引言 近日,在学习完操作系统的进程调度部分后,我萌生了一个有趣的想法:通过编写代码来模拟进程调度算法,以加深自己对这一知识点的理解。于是,我花了一整天的时间投入到了这个突发奇想的实践中。  背景 进程调度是操作系统中的重要概念,它决定...
    99+
    2023-10-26
    python 算法 linux 1024程序员节
  • Python怎么实现任务调度并行算法
    本篇内容介绍了“Python怎么实现任务调度并行算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本来自己想先使用Java来写一个版本,然后...
    99+
    2023-06-04
  • Python实现KPM算法详解
    目录知识点说明:一、要获取KPM算法的next[]数组二、KMP函数知识点说明: 先说前缀,和后缀吧 比如有一个串:abab 则在下标为3处的(前缀和后缀都要比下标出的长度小1,此处...
    99+
    2024-04-02
  • 7个流行的Python强化学习算法及代码实现详解
    目录1、Q-learning2、SARSA3、DDPG4、A2C5、PPO6、DQN7、TRPO总结目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、P...
    99+
    2023-01-28
    Python强化学习算法 Python强化学习
  • 怎么用python代码实现knn算法
    下面是一个简单的示例代码,实现了knn算法:```pythonimport numpy as npfrom collections ...
    99+
    2023-10-11
    python knn算法
  • 详解Python AdaBoost算法的实现
    目录1. AdaBoost 算法简介2. AdaBoost算法 逻辑详解2.1 数据2.2 带权错误率2.3 损失函数 与 确定样本权重2.4 确定模型权重2.5 输出模型3.Ada...
    99+
    2024-04-02
  • Java实现深度搜索DFS算法详解
    目录DFS概述解释思路案例题-单身的蒙蒙题目描述题解整体代码DFS概述 深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HT...
    99+
    2024-04-02
  • Java实现作业调度的示例代码
    目录Java实现作业调度要求参考代码运行效果Java实现作业调度 要求 Java实现SJF算法调度,要求测试数据可以随即输入或从文件中读入; 必须要考虑到作业的到达时间; 最终能够计...
    99+
    2023-05-14
    Java实现作业调度 Java作业调度 Java调度
  • C# md5 算法实现代码
    MD5的全称是message-digest algorithm 5 信息-摘要算法,在90年代初由mit laboratory for computer science和r...
    99+
    2022-11-13
    C# md5 算法 C# md5 C#算法
  • 怎么用python代码实现遗传算法
    要使用Python代码实现遗传算法,可以按照以下步骤进行操作:1. 定义问题:首先,需要明确要解决的问题是什么,例如优化问题、寻找最...
    99+
    2023-10-10
    python
  • 使用Python实现小批量梯度下降算法的代码逻辑
    让theta=模型参数和max_iters=时期数。对于itr=1,2,3,...,max_iters:对于mini_batch(X_mini,y_mini): 批量X_mini的前向传递: 1、对小批量进行预测 2、使用参数的当...
    99+
    2024-01-22
    算法的概念
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作