您的位置:首页 > 博客中心 > 网络系统 >

<随便写>进程基本知识

时间:2022-04-03 15:01

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)

  

本类排行

今日推荐

热门手游