管道:
conn1,conn2 = Pipe(),全双工,可以收发消息,一端发,另一端收,跨进程使用
事件:
e = Event() 初始等于False
e.wait() 当对象状态为False,此处会阻塞;当其为true,继续执行
e.set() 对事件对象改为true
e.is_set()查看状态
e.clear() 将事件状态改为false
信号量:
s.semphore(n) n为同时被锁的进程个数
方法使用同Lock,相当于锁的内部加一个计数器,完成一个即可释放一个
进程池(重点):为了提高效率,避免创建销毁重复进程的时间损失
map(任务名,可迭代对象):异步提交任务,瞬间提交多个,开始执行,自带close和join。
apply(任务名,参数):同步执行任务,必须等一个任务执行结束,才可以向进程池提交下一个任务,可以直接拿到返回结果
res_obj = apply——async(任务名,参数):异步,瞬间提交多个提交任务,可以拿到返回结果对象
从结果对象中拿结果,用get()方法,阻塞。没拿到结果会一直等。
close():锁住进程池,防止新的任务提交给进程池
join();等待进程池将自己里面的任务都执行完
回调函数
apply_async(f1,arhes(,),call_back=f2) 将前面f1任务的返回结果作为参数传给后面指定的f2