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实现进程间通信