Process与进程池Pool

2017-06-24  本文已影响33人  伍只蚊

fork()生成进程只适用于liunx系统,要想跨平台使用多进程需要导入multiprocessing模块。
和fork产生的进程不同,利用Process产生的进程,主进程会等待子进程执行完毕。
也可利用子类来创建进程,自定义类继承Process,重写run()方法,当进程start()时会自动调用run方法。
每个进程都有独立的系统资源,各进程间的变量不共享互不影响。
join()方法可以等待子进程结束后才继续往下走,用于进程间的同步。
1 from multiprocessing import Process 2 import time 3 def test(): 4 while True: 5 print('test') 6 time.sleep(1) 7 8 p = Process(target=test) 9 p.start() 10 11 while True: 12 print('main') 13 time.sleep(1)

Process的参数有:

Process常用属性,方法

进程池Pool

用于创建多个进程
3 from multiprocessing import Pool 4 import time 5 import os 6 7 def worker(num): 8 time.sleep(1) 9 print('工人 = %d,任务 = %d '%(os.getpid(),num)) 10 11 pa = Pool(3) 12 for i in range(10): 13 print(i) 14 pa.apply_async(worker,(i,)) 15 print('start') 16 pa.close() 17 pa.join() 18 print('end ')

multiprocess.Pool常用函数

主进程不等待子进程

上一篇 下一篇

猜你喜欢

热点阅读