最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)調(diào)度算法代碼詳解

 更新時(shí)間:2017年12月01日 11:50:09   作者:燕云  
這篇文章主要介紹了Python實(shí)現(xiàn)調(diào)度場(chǎng)算法代碼詳解,具有一定參考價(jià)值,需要的朋友可以了解下。

調(diào)度算法

操作系統(tǒng)管理了系統(tǒng)的有限資源,當(dāng)有多個(gè)進(jìn)程(或多個(gè)進(jìn)程發(fā)出的請(qǐng)求)要使用這些資源時(shí),因?yàn)橘Y源的有限性,必須按照一定的原則選擇進(jìn)程(請(qǐng)求)來(lái)占用資源。這就是調(diào)度。目的是控制資源使用者的數(shù)量,選取資源使用者許可占用資源或占用資源。

在操作系統(tǒng)中調(diào)度是指一種資源分配,因而調(diào)度算法是指:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。對(duì)于不同的的系統(tǒng)和系統(tǒng)目標(biāo),通常采用不同的調(diào)度算法,例如,在批處理系統(tǒng)中,為了照顧為數(shù)眾多的段作業(yè),應(yīng)采用短作業(yè)優(yōu)先的調(diào)度算法;又如在分時(shí)系統(tǒng)中,為了保證系統(tǒng)具有合理的響應(yīng)時(shí)間,應(yīng)當(dāng)采用輪轉(zhuǎn)法進(jìn)行調(diào)度。目前存在的多種調(diào)度算法中,有的算法適用于作業(yè)調(diào)度,有的算法適用于進(jìn)程調(diào)度;但也有些調(diào)度算法既可以用于作業(yè)調(diào)度,也可以用于進(jìn)程調(diào)度。

目標(biāo)闡述:

將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式(Reverse Polish Notation:RPN 逆波蘭式)
參與運(yùn)算的數(shù)據(jù)的正則表示為:[0-9]{1,}形式的十進(jìn)制數(shù)

運(yùn)算符優(yōu)先級(jí):(從高到低)————————————————————————
( )   括號(hào)
/ * %  除乘余
+ -   加減————————————————————————

解:

第一步:使用正則詞法分析器flex生成一個(gè)詞法分析器,以處理輸入的中綴表達(dá)式。
從stdin接收輸入,檢測(cè)非法字符,并將處理后的中綴表達(dá)式輸出到stdout。

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

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

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

第二步:使用Python進(jìn)行轉(zhuǎn)換。

從stdin接收一定格式的中綴表達(dá)式字符流,檢測(cè)是否在詞法分析器處理過(guò)程中出錯(cuò),然后使用調(diào)度場(chǎng)算法處理數(shù)據(jù),得到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)

實(shí)驗(yàn)結(jié)果:

目前程序的局限:
未進(jìn)行語(yǔ)法檢測(cè)。
不支持函數(shù)、變量標(biāo)識(shí)。

附錄:

算法示意圖,使用了3個(gè)空間。輸入用符號(hào)代替,如果輸入是一個(gè)數(shù)字則直接進(jìn)輸出隊(duì)列,即圖中 b),d),f),h)。如果輸入是運(yùn)算符,則壓入操作符堆棧,即圖中 c),e),但是,如果輸入運(yùn)算符的優(yōu)先級(jí)低于或等于運(yùn)算符棧頂?shù)牟僮鞣麅?yōu)先級(jí),則棧內(nèi)元素進(jìn)入輸出隊(duì)列(循環(huán)判定),輸入操作符壓入運(yùn)算符堆棧,即圖中 g)。 最后,運(yùn)算符堆棧內(nèi)元素入輸出隊(duì)列,算法結(jié)束。

附錄中資料摘自維基百科•調(diào)度場(chǎng)算法詞條。

總結(jié)

以上就是本文關(guān)于Python實(shí)現(xiàn)調(diào)度算法代碼詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出!

相關(guān)文章

  • Python+Turtle制作七夕愛心光波表白的示例代碼

    Python+Turtle制作七夕愛心光波表白的示例代碼

    七夕要來(lái)啦,小編在閑暇之余創(chuàng)作了一個(gè)基于Python+Turtle的愛心光波表白,文中有詳細(xì)的代碼示例,對(duì)我們七夕表白有很大的幫助,感興趣的小伙伴們快來(lái)來(lái)看看吧
    2023-08-08
  • Python中有趣在__call__函數(shù)

    Python中有趣在__call__函數(shù)

    這篇文章主要介紹了Python中有趣在__call__函數(shù),本文直接給出一個(gè)使用實(shí)例,以此來(lái)講解__call__函數(shù)的用法,需要的朋友可以參考下
    2015-06-06
  • 一道python走迷宮算法題

    一道python走迷宮算法題

    這篇文章主要為大家詳細(xì)介紹了一道python走迷宮算法題,用一個(gè)二維數(shù)組表示一個(gè)簡(jiǎn)單的迷宮,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python與xlwings黃金組合處理Excel各種數(shù)據(jù)和自動(dòng)化任務(wù)

    Python與xlwings黃金組合處理Excel各種數(shù)據(jù)和自動(dòng)化任務(wù)

    這篇文章主要為大家介紹了Python與xlwings黃金組合處理Excel各種數(shù)據(jù)和自動(dòng)化任務(wù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-12-12
  • Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法

    Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法,程序分為TCP的server端與client端兩部分,分別對(duì)這兩部分進(jìn)行了較為深入的分析,需要的朋友可以參考下
    2014-11-11
  • PyQt5中QTimer定時(shí)器的實(shí)例代碼

    PyQt5中QTimer定時(shí)器的實(shí)例代碼

    如果需要在程序中周期性地進(jìn)行某項(xiàng)操作,比如檢測(cè)某種設(shè)備的狀態(tài),就會(huì)用到定時(shí)器,本文主要介紹了PyQt5中QTimer定時(shí)器的實(shí)例代碼,感興趣的可以了解一下
    2021-06-06
  • python圖片處理庫(kù)Pillow實(shí)現(xiàn)簡(jiǎn)單PS功能

    python圖片處理庫(kù)Pillow實(shí)現(xiàn)簡(jiǎn)單PS功能

    Python 屆處理圖片最強(qiáng)的庫(kù)是 PIL(Python Image Library),但由于該庫(kù)只支持 2.x 版本,在此基礎(chǔ)上做了擴(kuò)展,出了一個(gè)兼容 3.x 的版本也就是 Pillow,因此,我們今天要用的庫(kù)就是Pillow
    2021-11-11
  • flask 實(shí)現(xiàn)token機(jī)制的示例代碼

    flask 實(shí)現(xiàn)token機(jī)制的示例代碼

    這篇文章主要介紹了flask 實(shí)現(xiàn)token機(jī)制的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Python裝飾器簡(jiǎn)單用法實(shí)例小結(jié)

    Python裝飾器簡(jiǎn)單用法實(shí)例小結(jié)

    這篇文章主要介紹了Python裝飾器簡(jiǎn)單用法,結(jié)合實(shí)例形式總結(jié)分析了Python裝飾器的基本功能、簡(jiǎn)單用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • python裝飾器初探(推薦)

    python裝飾器初探(推薦)

    下面小編就為大家?guī)?lái)一篇python裝飾器初探(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07

最新評(píng)論

芦山县| 烟台市| 宁城县| 璧山县| 贺兰县| 景德镇市| 来宾市| 常州市| 大姚县| 定襄县| 宿州市| 安义县| 通州市| 崇文区| 尤溪县| 阜南县| 额尔古纳市| 洛隆县| 额济纳旗| 辽阳县| 炉霍县| 宜都市| 神农架林区| 应城市| 凤山市| 麦盖提县| 岫岩| 安陆市| 蒙自县| 双江| 西华县| 灵山县| 通海县| 丘北县| 阜新| 四子王旗| 吉安市| 宁化县| 郁南县| 诏安县| 望都县|