赞
踩
进程是系统最小的资源管理单元,是一个程序在一个数据集上的一次动态执行过程。
线程是计算机程序运行的实际执行者,是cpu的执行单元,在计算机中,进程主要是为了线程的执行进行分配资源操作,程序真正的执行者是线程,每一个进程至少有一个线程用于执行程序。一个进程可以有多个线程,而一个线程只服务于一个进程。
在python里一共内置了两种多线程模块,_thread和threading模块,其中对于python3.x的用户来说,最好使用threading模块。
常用的有下列方法:
_thread.get_ident() | 获取当前线程 |
_thread.start_new_thread() | 创建一个新线程 |
threading.Thread | 创建及管理线程 |
---|---|
threading.Event | 事件类,用于线程同步 |
threading.Condition | 条件类,用于线程同步 |
threading.Lock/RLock | 锁类,用于线程同步 |
threading.Timer | 延时线程 |
threading.active_count() | 获取当前alive的线程数量 |
threading.current_thread() | 获取当前正在执行的对象 |
threading.get_ident() | 获取当前线程的编号及名称 |
threading.envmerate() | 获取当前alive的线程列表 |
threading.main_thread() | 获取主线程信息 |
|
1.Thread模块
Thread模块下的方法
__init__(group,target,name,args,kwargs) 创建进程,括号内是创建进程的一些属性 is_alive 判断进程的alive状态 run() 执行线程的方法(最好不直接使用) start() 线程启动方法 join([timeout=None]) 线程独占,在线程执行完之前或者超时之后阻塞进程 ident 当前线程的唯一编号 name 当前线程的名称 daemon 判断是否是守护线程2.current_thread模块
current_thread模块下的方法
get_name() | 当前线程名称 |
3.Lock/RLock模块(互斥锁/可重用锁)
模块下的方法
acquire() | 上锁 |
release() | 解锁 |
4.Dead Lock(死锁)
当cpu进行并发时间片切换操作时恰好遇到了重复上锁的情况,于是程序就会被锁死,不再执行结束
5.Condition模块
acquire() | 上锁 |
release() | 解锁 |
wait() | 解锁,同时阻塞当前进程,等待被进程唤醒 |
wait_for() | 解锁,同时阻塞当前线程,等待被特定进程唤醒 |
notify() | 唤醒 |
notify_all() | 唤醒所有等待的线程 |
6.Event模块
set() | 添加标记 |
wait() | 等待 |
clear() | 清除标记 |
queue.Queue().put( , [timeout=None]) 向队列中添加,直到队列满或者超时
queue.Queue().get( , [timeout=None]) 从队列中取出,直到队列为空或者超时
Process | 进程类型,用于创建进程和管理进程 |
Lock/RLock | 互斥锁\重用锁, 用于进程同步 |
Event | 事件类型,用于进程同步 |
Condition | 条件类型,用于进程同步 |
Queue | 队列类型 |
Manager | 进程管理类型 |
Listener | Client | 进程监听\客户端 |
os.getpid() 展示当前进程编号
os.getppid() 展示当前父进程编号
全局变量经过多个进程处理后,并不会发生变化,因为进程在运行时,会把需要的数据复制一份,然后再进行操作。
apply(func,args) | 传递参数args并执行函数func,同时阻塞进程池,直到当前函数执行完成 |
apply_async(func,args,callback,error_callback) | 这种方法不会阻塞进程池 |
close() | 主动停止向进程池中提交任务 |
terminate() | 主动结束该进程,当进程池对象被回收时自动调用 |
join() | 等待工作进程退出,独占 |
Array | 进程间共享数组类型 |
Queue | 进程间共享队列类型 |
list() | 进程间共享列表类型 |
dict() | 进程间共享字典类型 |
Value | 进程间共享值类型 |
Barrier | |
BoundedSemaPhorel | SemaPhore | 进程信号量类型 |
Lock | RLock | 进程互斥锁 | 重用锁 |
Event | 同步事件类型 |
Condition | 同步条件类型 |
put(data, [ , timeout=None]) | 添加一个数据 |
put_nowait(data) | 非阻塞模式 |
get([timeout=None]) | 获得一个数据 |
get_nowait() | 非阻塞模式 |
full() | 判断队列已满 |
empty() | 判断队列已空 |
close() | 关闭 |
qsize() | 获取队列中元素数量 |
multiprocessing.Pipe.send(data) 发送消息
multiprocessing.Pipe.recv() 接收消息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。