进程基础复习02

多进程代码
from multiprocessing import Process (以下的方法与属性都是Process)
方法
进程对象.start() 开启一个子进程
进程对象.join() 感知一个子进程的结束
进程对象.terminate() 结束一个子进程
进程对象.is_alive() 查看某个子进程是否还在运行

属性
进程对象.name 进程名
进程对象.pid 进程号
进程对象.daemon 值为True的时候,表示新的子进程是一个守护进程
守护进程 随着主进程代码的执行结束而结束
daemon 一定在start之前设置

 1 # multiprocess.Semaphore
 2 # 信号量
 3 
 4 # 某一段代码 同一时间 只能被n个进程执行
 5 # semaphore 信号量
 6 # import time
 7 # import random
 8 # from multiprocessing import Process
 9 # from multiprocessing import Semaphore
10 #
11 # def ktv(i,sem):
12 #     sem.acquire()  # 获取钥匙
13 #     print("%s走进ktv"%i)
14 #     time.sleep(random.randint(1,5))
15 #     print("%s走出ktv"%i)
16 #     sem.release()
17 #
18 # if __name__ == "__main__":
19 #     sem = Semaphore(4)
20 #     for i in range(20):
21 #         p = Process(target=ktv,args=(i,sem))
22 #         p.start()
23 
24 # semaphore 其实内部也用了锁的机制,不过是多了一个计数器
25 
26 
27 
28 # 通过一个信号 来控制 多个进程 同时 执行或者阻塞 ,可以通过事件来做这件事
29 
30 # 一个信号可以使所有的进程都进入阻塞状态
31 # 也可以控制所有的进程解除阻塞
32 # 一个事件被创建之后,默认是阻塞状态
33 
34 # from multiprocessing import Event
35 # e = Event()  # 创建了一个事件
36 # print(e.is_set())  # 查看一个事件的状态,默认被设置成阻塞
37 # e.set()  # 将这个事件的状态改为True
38 # print(e.is_set())
39 # print(123456)
40 # e.wait(2)
41 # e.wait()是依据e.is_set()的值来决定是否阻塞的,
42 # 如果is_set()是False 那么wait就阻塞,如果是True,就不在wait()这个地方阻塞了。
43 # print(98765432)
44 
45 # e.clear()  # 将这个事件的状态改为False
46 # print(e.is_set())
47 # e.wait(4)
48 # print("堵了")
49 
50 # set 和 clear
51     # 分别用来修改一个事件的状态  True或者False
52 
53 # is_set 用来查看一个事件的状态
54 # wait   是依据事件的状态来决定自己是否阻塞
55         #  False 阻塞    True 不阻塞
56 
57 # 灯的变化 就是事件状态的变化
58 # 红绿灯事件
59 # import time
60 # import random
61 # from multiprocessing import Event
62 # from multiprocessing import Process
63 # def car(e,i):
64 #     if not e.is_set():
65 #         print("car%i在等待"%i)
66 #         e.wait()
67 #     print("car%i已经通行"%i)
68 #
69 # def light(e):
70 #     while True:
71 #         if e.is_set():
72 #             e.clear()
73 #             print("33[31m红灯亮了33[0m")
74 #         else:
75 #             e.set()
76 #             print("33[32m绿灯亮了33[0m")
77 #         time.sleep(2)
78 #
79 # if __name__ == "__main__":
80 #     e = Event()
81 #     traffic = Process(target=light,args=(e,))
82 #     traffic.start()
83 #     for i in range(20):
84 #         cars = Process(target=car,args=(e,i))
85 #         cars.start()
86 #         time.sleep(random.random())
# 注:本文是根据老男孩课程内容整理而成的,本文仅供个人笔记使用,如果有侵犯,请联系我,我立即撤销。

 

原文地址:https://www.cnblogs.com/pioneerLee/p/10318771.html