学习进程的有关知识

一.进程的概念
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
二.队列(queue)与进程和进程传参代码
import multiprocessing
# 写数据
def write(queue):
for i in range(10):
if queue.full():
print(‘已经满员,不能再存’)
break
queue.put(i)
# 读取任务\
def read(queue):
while True:
if queue.empty():
print(‘没有值啦’)
break
print(queue.get())
if name == ‘main‘:
queue = multiprocessing.Queue(maxsize=5)#最大接收消息
t1 = multiprocessing.Process(target=write,args=(queue,))
t2 = multiprocessing.Process(target=read,args=(queue,))
t1.start()
t1.join() # join的作用:主进程阻塞,等待子进程
t2.start()
三.进程池
1.概念
python中,进程池内部会维护一个进程序列。当需要时,程序会去进程池中获取一个进程。如果进程池序列中没有可供使用的进程,那么程序就会等待,直到进程池中有可用进程为止。
2.有哪些方法
apply 从进程池里取一个进程并同步执行
apply_async 从进程池里取出一个进程并异步执行
terminate 立刻关闭进程池
join 主进程等待所有子进程执行完毕,必须在close或terminete之后
close 等待所有进程结束才关闭线程池
3.参考代码
import multiprocessing
import os
import time
def copy(index):
print(‘当前进程的编号’,os.getpid())
print(index)
time.sleep(1)
if name == ‘main‘:
pool = multiprocessing.Pool(4)
for i in range(10):
pool.apply_async(copy,(i,)) #apply_async是异步非阻塞
pool.close() #等待所有的任务都完成才关闭进程池
pool.join() # join的作用:主进程阻塞,等待子进程

猜你喜欢

转载自blog.csdn.net/weixin_42986099/article/details/81807404