Python day37作業 程序

2021-10-23 18:36:17 字數 3868 閱讀 1041

默寫

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...