python_并发编程——事件】的更多相关文章

1.事件 :通过一个信号来控制多个进程同时执行或者阻塞. 一个信号可以使所有的进程都进入阻塞状态,也可以控制所有的进程接触阻塞,一个事件被创建之后,默认是阻塞状态. from multiprocessing import Event e = Event() #创建事件对象 print(e.is_set()) #查看一个事件的状态:默认是阻塞即False print(11111) e.wait() #依据事件状态,来觉得是否阻塞 print(22222) 结果: 2.解除阻塞: from mult…
事件用来控制多个进程同时执行或者阻塞 set和clear 分别用来修改一个事件的状态,True或者False is_set 用来查看一个事件的状态 wait 是依据事件的状态来决定自己是否在wait处阻塞 False阻塞, True不阻塞 from multiprocessing import Event #一个信号可以使得所有的进程都进入阻塞状态 #也可以控制所有的进程解除阻塞 #一个事件被创建之后, 默认是阻塞状态 e = Event() #创建了一个事件 print(e.is_set())…
1.进程池 from multiprocessing import Pool def func(n): for i in range(10): print(n+1) if __name__ == '__main__': pool = Pool(3) #启动有三个进程的进程池. #第一个参数进程要访问的代码,第二个参数必须是一个可迭代参数,规定了要执行的任务数 pool.map(func,range(100)) #100个任务 结果: 每个数打印了10次. 2.进程池和多进程的用时对比 def f…
1.数据共享 实现进程之间的数据共享 from multiprocessing import Manager,Process class MyPro(Process): def __init__(self,dic): super().__init__() self.dic = dic def run(self): self.dic['count'] -= 1 print(self.dic) if __name__ == '__main__': m = Manager() dic = m.dict…
1.管道 from multiprocessing import Pipe conn1,conn2 = Pipe() #返回两个值 conn1.send('wdc') #发送 print(conn2.recv()) #接收 conn2.send('yhf') print(conn1.recv()) 结果:~双向通信 2.在进程中传递数据 from multiprocessing import Pipe,Process class Pr1(Process): def __init__(self,c…
消费者和生产者模型 from multiprocessing import Process,Queue import time import random class Producer(Process): def __init__(self,name,food,q): super().__init__() self.name = name self.food = food self.q = q def run(self): for i in range(1,11): time.sleep(ran…
1.队列 from multiprocessing import Queue q = Queue(5) #创建队列对象,队列大小为5,队列中只能存放5个元素 q.put(1) #往队列中添加元素 q.put(2) q.put(3) q.put(4) q.put(5) print(q.full()) #检测队列是否满了~ print(q.get()) #取出队列中的值 print(q.get()) print(q.get()) print(q.get()) print(q.get()) print…
多进程模拟买票~ import time import json from multiprocessing import Process class Show(Process): #查 def run(self): with open('ticket') as f: dic = json.load(f) print("余票:{}".format(dic['ticket'])) class Buy_ticket(Process): #买 def __init__(self,name):…
1.守护进程 守护进程会随着主进程的代码执行结束而结束. 语法:进程对象.daemon = True时,表示将进程设置为守护进程,一定在start之前设置. import time from multiprocessing import Process class MyProcess(Process): def run(self): while True: time.sleep(1) print('我还活着~') if __name__ == '__main__': q = MyProcess(…
1.多进程的第二种启动方式 import os from multiprocessing import Process # 创建一个自定义类,继承Process类 class MyProcess(Process): # 必须实现一个run方法,run方法中是子进程中执行的代码 def run(self): print('子进程:',os.getpid()) if __name__ == '__main__': print('主进程',os.getpid()) p1 = MyProcess() p…