1. 程式人生 > >7.16 進程 信號量

7.16 進程 信號量

author live __main__ rgs rmi env port term sin

01.復習內容

子進程裏面不能用 input 明天認真看 ,天熱有點浮躁!

 1 #!/usr/bin/env python
 2 #!--*--coding:utf-8 --*--
 3 #!@Time    :2018/7/16 18:46
 4 #!@Author   TrueNewBee
 5 
 6 """
 7     我把之前的項目誤刪了,重新建個項目,
 8     還好以前部分代碼用sublime編寫的還有存檔
 9 """
10 #多進程代碼
11 
12 # from multiprocessing import Process
13 #方法
14     #進程對象.start()       開啟一個子進程
15 #進程對象.join() 感知一個子進程的結束 16 #進程對象.terminate() 結束一個子進程 17 #進程對象.is_alive() 查看某個子進程是否還在運行 18 #屬性 19 #進程對象.name 進程名 20 #進程對象.pid 進程號 21 #進程對象.daemob 值為True的時候,表現新的子進程是一個守護進程 22 #守護進程 隨著主進程代碼的執行結束而結束 23 #一定在start之前設置 24 25 #from multiprocessing import Lock
26 27 #l = Lock() 28 #l.acquire() #拿鑰匙 29 #會造成數據不安全的操作 30 #l.release() #換鑰匙

# 信號量 pep8的標準還得適應,,真難

 1 # !/usr/bin/env python
 2 # !--*--coding:utf-8 --*--
 3 # !@Time    :2018/7/16 19:01
 4 # !@Author   TrueNewBee
 5 
 6 
 7 # 多進程中的組件
 8 # 一套資源  同一時間 只能被n個人訪問
 9 # 某一段代碼 同一時間 只能被n個進程執行
10 import
time 11 import random 12 from multiprocessing import Process 13 from multiprocessing import Semaphore 14 15 16 def ktv(arg, sem1): 17 sem1.acquire() # 獲取鑰匙 18 """模擬唱歌""" 19 print("%s走進ktv"%arg) 20 time.sleep(random.randint(1, 5)) 21 print("%s走出ktv"%arg) 22 sem.release() 23 24 25 if __name__ == __main__: 26 sem = Semaphore(4) 27 for i in range(20): 28 p = Process(target=ktv, args=(i, sem)) 29 p.start()

7.16 進程 信號量