程序模擬購票
from multiprocessing import process, lock
import json
import time
defsearch
(name)
: time.sleep(1)
dic = json.load(
open
('db.txt'
,'r'
, encoding=
'utf-8'))
print
('<%s> 檢視到剩餘票數【%s】'
%(name, dic[
'count'])
)def
get(name)
: time.sleep(1)
dic = json.load(
open
('db.txt'
,'r'
, encoding=
'utf-8'))
if dic[
'count'
]>0:
dic[
'count']-=
1 time.sleep(3)
json.dump(dic,
open
('db.txt'
,'w'
, encoding=
'utf-8'))
print
('<%s> 購票成功'
% name)
deftask
(name, mutex)
: search(name)
# 查票操作每個人都可以執行,並且是併發執行的
mutex.acquire(
)# 在這裡可以新增互斥鎖,達到序列執行,使得只能有乙個人購票成功
get(name)
mutex.release(
)if __name__ ==
'__main__'
: mutex = lock(
)for i in
range(10
):p = process(target=task,args=
('路人%s'
% i, mutex)
) p.start(
)
CCF 201609 2 火車購票 模擬
問題描述 請實現乙個鐵路購票系統的簡單座位分配演算法,來處理一節車廂的座位分配。假設一節車廂有20排 每一排5個座位。為方便起見,我們用1到100來給所有的座位編號,第一排是1到5號,第二排是6到10號,依次類推,第20排是96到100號。購票時,乙個人可能購一張或多張票,最多不超過5張。如果這幾張...
CCF2016 09 2 火車購票(小模擬)
問題描述 請實現乙個鐵路購票系統的簡單座位分配演算法,來處理一節車廂的座位分配。假設一節車廂有20排 每一排5個座位。為方便起見,我們用1到100來給所有的座位編號,第一排是1到5號,第二排是6到10號,依次類推,第20排是96到100號。購票時,乙個人可能購一張或多張票,最多不超過5張。如果這幾張...
模擬shell程序
1.用fork 建立乙個程序,再呼叫execl 用新的程式 命令 替換該子程序的內容,利用wait 來控制程序執行順序。例如模擬乙個shell程式,可以是最簡化版的shell模擬,即建立乙個子程序執行乙個固定的shell命令,也可以是從終端獲取使用者輸入的shell命令,建立子程序執行這個shell...