主要用到multiprocessing模块
当所需的子进程不多时,我们用Process
from multiprocess import process
import time
def 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........2
Func2.........3
Func1........3
Func2.........5
Func1........4
Func2.........7
Child1 process end.
Func2.........9
Func2.........11
Func2.........13
join()方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步
当取消对p.jion()的注释后,运行结果如下:
Child1 process will start.
Child2 is start!
Func1........2
Func2.........3
Func1........3
Func2.........5
Func1........4
Func2.........7
Func1........5
Func2.........9
Func1........6
Func2.........11
Func1........7
Func2.........13
Func1........8
Func2.........15
Func1........9
Func2.........17
当需要多个子进程时,我们可以用到Pool
from multiprocessing import Process, Pool
import time
def 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........2
Func2.........3
Func1........3
Func2.........5
Func1........4
Func2.........7
Func1........5
Func2.........9
terminate!