python 简单的进程与协程
- 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()
-