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()
原文地址:https://www.cnblogs.com/zhen1996/p/9319837.html