本文共 1644 字,大约阅读时间需要 5 分钟。
主要用到multiprocessing模块
当所需的子进程不多时,我们用Processfrom multiprocess import processimport timedef func1(num): while True: num += 1 print('Func1........' + str(num)) time.sleep(1)def func2(num): while True: num += 2 print('Func2.........' + str(num)) time.sleep(1)p = Process(target= func1, args= [1, ])p2 = Process(target= func2, args= [1,])print('Child1 process will start.')p.start()print('Child2 is start!')p2.start()#p.join()time.sleep(3)p.terminate()print('Child1 process end.')
输出结果如下
Child1 process will start.Child2 is start!Func1........2Func2.........3Func1........3Func2.........5Func1........4Func2.........7Child1 process end.Func2.........9Func2.........11Func2.........13
join()方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步
当取消对p.jion()的注释后,运行结果如下:Child1 process will start.Child2 is start!Func1........2Func2.........3Func1........3Func2.........5Func1........4Func2.........7Func1........5Func2.........9Func1........6Func2.........11Func1........7Func2.........13Func1........8Func2.........15Func1........9Func2.........17
当需要多个子进程时,我们可以用到Pool
from multiprocessing import Process, Poolimport timedef func1(num): while True: num += 1 print('Func1........' + str(num)) time.sleep(1)def func2(num): while True: num += 2 print('Func2.........' + str(num)) time.sleep(1)p = Pool(2)p.apply_async(func1, args=[1,])p.apply_async(func2, args= [1,])p.close()#p.join()time.sleep(3)p.terminate()print('terminate!')
调用close()运行进程
输出结果如下Func1........2Func2.........3Func1........3Func2.........5Func1........4Func2.........7Func1........5Func2.........9terminate!
转载地址:http://saben.baihongyu.com/