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才能看出输出结果

posted @ 2020-03-18 08:22  myrj  阅读(148)  评论(0)    收藏  举报