Python进阶:多线程、多进程和线程池编程/协程和异步io/asyncio并发编程

gil:

gil使得同一个时刻只有一个线程在一个CPU上执行字节码,无法将多个线程映射到多个CPU上执行

gil会根据执行的字节码行数以及时间片释放gil,gil在遇到io的操作时候主动释放

threading:

queue:

Lock::

condition:

condition有两层锁, 一把底层锁会在线程调用了wait方法的时候释放, 上面的锁会在每次调用wait的时候分配一把并放入到cond的等待队列中,等到notify方法的唤醒

semaphore:

ThreadPoolExecutor:

multiprocessing:

进程:

  • 对于耗费cpu的操作,多进程优于多线程
  • 对于io操作来说,多线程优于多进程

多进程间通信:

  • multiprocessing中的queue不能用于pool进程池
  • pool中的进程间通信需要使用manager中的queue
  • 通过pipe实现进程间通信
原文地址:https://www.cnblogs.com/darklights/p/11783805.html