zoukankan      html  css  js  c++  java
  • <随便写>进程基本知识

    from multiprocessing import Process, Queue,Pool
    import time
    import os
    
    
    def producer(q):
    	for i in range(5):
    		time.sleep(0.6)
    		print("生产第%s个包子" % (i + 1))
    		res = i + 1
    		q.put(res)  # 没生产一个,往队列里加一个
    	time.sleep(1)
    	q.put(None)
    
    
    def cousumer(q):
    	while True:
    		res = q.get()
    		if res == None:
    			break
    		time.sleep(1)
    		print("消费者吃的第%s个包子" % res)
    
    
    if __name__ == '__main__':
    
    	'''
    	进程:
    	target:表示调用对象,也就是子进程要执行的对象
    	args:调用对象的位置参数元组
    	kwargs:调用对象的字典
    	name:子进程的名字
    	p.join([timeout]):主线程等待P终止
    	进程队列:进程彼此隔离,要实现进程之间的通信,可以使用队列和管道
    	q = Queue([maxsize])
    	q.put('123') #往队列中加元素
    	q.get('123') #往队列中读取并删除一个元素
    	q.full() #判断队列是否已经满了,满了再放进去就会阻塞
    	q.empty() #判断队列是否已经空了,空了就不能再get
    	
    
    	'''
    	q = Queue()
    	p_lst = []
    	for i in range(5):
    		s1 = "子进程" + "producer"
    		s2 = "子进程" + "cousumer"
    		p = Process(target=producer, args=(q,), name=s1)
    		c = Process(target=cousumer, args=(q,), name=s2)
    		p.start()
    		c.start()
    		print(p.pid)
    		p_lst.append(p)
    		print(p.is_alive())  # 判断进程P是否存话
    		# p.terminate()  # 终止P进程
    		print(p.is_alive())
    		p.join()
    		'''
    		需要等待子进程执行完毕后才能继续执行,就需要有一种机制能够让主进程检测子进程是否运行完毕,在子进程执行完毕后才继续执行,否则一直在原地阻塞,这就是join方法的作用
    		看清楚:join作用是让主进程等待子进程结束,其他子进程并不会停止
    		'''
    	time.sleep(1)
    	print("执行主进程")
    	print(p_lst)
    

      

  • 相关阅读:
    三行Python代码查询IP
    剑指offer面试题29:数组中出现次数超过一半的数字
    【简】题解 AWSL090429 【数塔问题】
    Re.常系数齐次递推
    Re.多项式除法/取模
    【翻译】A simple stone game
    Re.多项式求逆
    Re.FFT
    题解 P4783 【【模板】矩阵求逆】
    关于win10企业版在极域电子教室软件 v4.0 2015 豪华版的全屏控制下如何取得自由
  • 原文地址:https://www.cnblogs.com/shuimohei/p/10500266.html
Copyright © 2011-2022 走看看