7.16 进程 信号量
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()