进程线程的区别(threading 源码学习)
python 中的threading 模块是对 thread模块的封装
默认thread模块是C实现的,我对C语言并不了解,幸好官方提供了dummy_thread模块,
dummy_thread 是 对thread的python 实现,通过他可以简单理解thread
注:dummy_thread 无法实现多线程
dummy_thread
这幅图大好
process: single-threaded process
threaded: Multi-Threaded
为什么使用线程
- 并行需求
- 避免因i/o缓慢 引起的阻塞
ihooks module 的使用
|
|
ihooks 绝对路径导入
线程的 启动 结束 加锁 释放
把要执行的代码 放到run方法里面
python 线程同步机制
Locks,
锁RLocks,
重复锁Semaphores,
信号量semaphore
是一个变量,控制着对公共资源或者临界区的访问。信号量维护着一个计数器,指定可同时访问资源或者进入临界区的线程数。
每次有一个线程获得信号量时,计数器-1。若计数器为0,其他线程就停止访问信号量,直到另一个线程释放信号量。Conditions,
条件
condition.acquire() #获取条件锁
condition.notify() #唤醒消费者线程
condition.release() #释放条件锁with self.condition: ##可以用with 代替 acquire 和 release
condition.wait() #等待商品,并且释放资源
Events
事件Queues
队列
- 多进程中 def Pipe(duplex=True)
参考:
详细讲解Python线程应用程序操作
Python 多线程
Python线程指南
python实现线程池
Python线程池详细讲解