进程池(内含回调函数),管道,事件,信号量

管道:

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

原文地址:https://www.cnblogs.com/shachengcc1/p/11333278.html