7.16 進程 信號量
阿新 • • 發佈:2018-07-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 Lock26 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 importtime 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 進程 信號量