python 进程
进程:资源分配的基本单位,是线程的容器
程序是固定不变的,而进程会根据运行需要,让操作系统动态分配各种资源
一个进程中包括多个线程
进程的状态:新建(刚打开),就绪(CPU下一个时间片运行另外的程序),运行 等待 ( 堵塞:本身的sleep) 死亡
就绪:运行的条件已经满足,正在等待CPU运行
进程共享全局变量:
(A)主进程:num=multiprocessing.Value("d",0)
(B)传入子进程:
class qfphone(Process): def __init__(self,name,phone_q1,phone_q2,lock,num): Process.__init__(self) self.name=name self.phone_q1=phone_q1 self.phone_q2=phone_q2 self.num=num
(C)子进程调用:self.num.value=self.num.value +1
(D)子进程显示变量的值: print(self.num.value)
(E)主进程中显示:print(num.value)
进程间通过QUEUE传递值:put() get()时如果队列满了,或空时,写入或读取都会报错,因此需要加条件进行判断或利用TRY EXCEPT获取异常
[注意:队列的full(),empty()结果是不准确的,因为现在满,可能马上就空了,因此不能应用这两个函数来判断而来作为可以读取的依据 ]
auu=0 while auu==0: try: pho=self.phone_q1.get(True) auu=1 except: time.sleep(0.01)
#进入一个无限循环,如果从队列中读到值,则马上退出循环;如果没有读出数据则报错并被获取,然后停留0.01秒,再继续从队列中读取,直到读到数据为止
子进程中的print直接运行不显示,只能在dos命令状态下:python aa.py才能看出输出结果