进程
通俗理解一个运行起来的程序或者软件就叫做进程,每启动一个进程,操作系统都需要给对应的进程分配运行资源,运行资源是让线程执行代码的时候使用,所以进程是操作系统分配资源的基本单位,默认一个进程只有一个线程,这个线程是主线程,进程只提供资源,真正干活的是线程。
根据进程编号杀死指定进程
os.kill(os.getpid(),9)
多进程之间不共享全局变量,多进程间的全局变量相当于资源的拷贝
守护主进程 主进程退出后 子进程直接销毁,不在执行子进程中的代码
process.setdaemon = True
进程间的通信Queue
创建消息队列 如果指定大小,那么消息队列只能放入指定个数的大小,如果不指定队列的大小则没有上限
queue = multiprocessing.Queue(3)
向队列放入数据
queue.put(5)
坑点:put放入数据以后,使用empty检查队列是否为空的时候,返回的值不对
解决办法1、放入数据后使用延时,保证数据写入完成后再检查队列是否为空
解决方法2、使用qsize()判断队列的个数,得知是否为空
if queue.qsize() == 0:
print("空")
else:
print("不为空")
- 判断队列是否满了
- queue.full()
- 提示:使用put放入数据,如果队列满了,则需要等待有空闲位置才能放入数据
- 提示:使用put_notwait,放入数据的时候不需要等待,如果队列满了,不能放入数据则奔溃,抛出队列满了的异常
- 获取数据
- queue.get()
- 提示: 如果队列为空, 再获取数据需要等待,队列里面有数据了才能再获取数据
- 提示: get_nowait获取数据的时候不需要等待,如果队列为空,那么会崩溃抛出队列为空的异常