默寫
1.主程序中建立兩個其它程序,實現主程序結束,兩個子程序也自動結束
from multiprocessing import process, lock, queue
import time
import random
import json
deftask
(n):
print
(f'紫荊城啟動,正在執行'
) time.sleep(5)
print
(f'子程序執行結束'
)if __name__ ==
'__main__'
: t = process(target=task, args=
('一號',)
) t2 = process(target=task, args=
('二號',)
) t.daemon =
true
t.start(
) t2.start(
) time.sleep(1)
print
('主程序結束,一號給噎死')2
.通過互斥鎖,實現模擬搶票
defsearch
(i):
with
open
(r'd:\python成長之路\八月二十四\**\ticket'
,'r'
, encoding=
'utf-8'
)as f:
dic = json.load(f)
print
(f'使用者票數為'
,dic.get(
'ticket_count'))
defbuy
(i):
with
open
(r'd:\python成長之路\八月二十四\**\ticket'
,'r'
, encoding=
'utf-8'
)as f:
dic = json.load(f)
ticket_count = dic.get(
'ticket_count'
) time.sleep(random.randint(1,
3))if dic.get(
'ticket_count'
)>0:
dic[
'ticket_count']-=
1with
open
(r'd:\python成長之路\八月二十四\**\ticket'
,'w'
, encoding=
'utf-8'
)as f:
json.dump(dic, f)
print
(f'使用者搶到了'
)print
(f'當前票數為'
)else
:print
(f'使用者沒搶到'
)def
task
(mutex, i)
: search(i)
# mutex.acquire()
with mutex:
buy(i)
# mutex.release()
if __name__ ==
'__main__'
: mutex = lock(
)for i in
range(1
,11):
t = process(target=task, args=
(mutex, i)
) t.start(
)3 通過佇列實現多個程序之間資料通訊
deftask1
(q):
print
('程序一'
)print
('傳送訊息'
) q.put(
'sailan'
) q.put(
'msmso'
)def
task2
(q):
print
('程序二'
)print
('收到訊息'
, q.get())
deftask3
(q):
print
('程序三'
)print
('收到訊息'
, q.get())
if __name__ ==
'__main__'
: q = queue(2)
t1 = process(target=task1, args=
(q,)
) t2 = process(target=task2, args=
(q,)
) t3 = process(target=task3, args=
(q,)
) t1.start(
) t2.start(
) t3.start(
)4 整理上下文管理器的使用,實現課上
**class
myclass
:def
__init__
(self, file_name, mode, encoding)
: self.filename = file_name
self.mode = mode
self.encoding = encoding
def__enter__
(self)
: self.
file
=open
(self.filename, self.mode, encoding=self.encoding)
return self.
file
def__exit__
(self, exc_type, exc_val, exc_tb)
: self.
file
.close(
)with myclass(r'd:\python成長之路\八月二十四\**\ticket'
,'r'
, encoding=
'utf-8'
)as f:
print
(f.read())
5 (高階)通過多程序,實現tcp服務端支援多個客戶端連線
from socket import
*from multiprocessing import process
server=socket(af_inet,sock_stream)
server.bind(
('127.0.0.1'
,8080))
server.listen(5)
deftalk
(conn,client_addr)
:while
true
:try
: msg=conn.recv(
1024)if
not msg:
break
conn.send(msg.upper())
except exception:
break
if __name__ ==
'__main__'
:while
true
: conn,client_addr=server.accept(
) p=process(target=talk,args=
(conn,client_addr)
) p.start(
)6(高階)通過佇列和多程序實現生產者消費者模型
(3 7)程序與執行緒 程序環境
2.命令列引數 3.環境變數表 4.如何訪問環境變數表?5.設定環境變數 標頭檔案unistd.h extern char environ 標頭檔案 stdlib.h char getenv const char name 指定環境變數名稱,返回環境變數字串指標,若未找到則返回空指標 putenv ...
python day20函式式作業
作業 檔案內容如下,標題為 姓名,性別,年紀,薪資 egon male 18 3000 alex male 38 30000 wupeiqi female 28 20000 yuanhao female 28 10000 要求 從檔案中取出每一條記錄放入列表中,列表的每個元素都是的形式 with o...
3 7日C 上機作業
題目1 修改教材的clock類,增加物件的行為 內容 1 走時 2 以12時制的形式顯示時鐘的當前值 3 編寫測試類的程式 建立兩個時鐘物件,分別呼叫物件的行為.設計思路 根據系統自帶的clock t的函式,再設定空迴圈,我們能夠使系統延遲1秒輸出,同時在時鐘的類當中增加設定時鐘和顯示時鐘的函式 i...