python 简单的进程与协程

本文介绍了使用Python实现多进程及协程的具体方法。通过示例展示了如何创建子进程并利用进程池进行任务调度,同时演示了生产者与消费者模式下协程的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os
import time
from multiprocessing import Process,Pool




##################### 多进程 与 进程池 #######################


def run_proc(name):
	""" 子进程要执行的 """
	print("Child process %s (%s) Running..."%(name,os.getpid()))
	time.sleep(3)




def main_ordinary():
	""" 一般的多进程 """
	print("Parent process %s."%os.getpid())
	for i in range(4):
		p = Process(target=run_proc,args=(i,))
		print("Process will start.")
		p.start()
	p.join()
	print("Process end.")




def main_pool():
	""" 进程池 """
	print("Parent process %s."%os.getpid())
	p = Pool(processes=3) # 最大3个进程
	for i in range(5):
		p.apply_async(run_proc,args=(i,))
	print("waitm")
	p.close()
	p.join()




######################## 协程---生产者与消费者 ########################




def xf():
	""" 消费者 """
	x = 0
	while 1:
		x = yield '消费了 %s 件'%x




def sc():
	""" 生产者 """
	f = xf()
	f.send(None)
	for i in range(1,11):
		print('生产 %s 件'%i)
		if not i%5:
			print(f.send(i))




if __name__ == '__main__':
	main_ordinary()
	main_pool()
	sc()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值