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)
    

      

  • 相关阅读:
    使用babel插件集
    使用babel
    webpack基本配置
    vue-router参数传递
    路由(二) router-link的使用
    路由使用(一)
    获取DOM
    父组件传递值给子组件(一)
    定义全局组件
    Windows下更改MySQL数据库的存储位置
  • 原文地址:https://www.cnblogs.com/shuimohei/p/10500266.html
Copyright © 2011-2022 走看看