1、multiprocessing模块
from multiprocessing import Process import os # 子进程要执行的代码 def run_proc(name): print ('Run child process %s (%s)...' % (name, os.getpid())) if __name__=='__main__': print ('Parent process %s.' % os.getpid()) # dst=['train','test','valid'] p = Process(target=run_proc, args=('test',)) print ('Process will start.') p.start() p.join() print ('Process end.')
结果:
Parent process 3728.
Process will start.
Run child process test (13004)...
Process end.
2、Pool 进程池(进程池的方式批量创建子进程)
from multiprocessing import Pool import os, time, random def long_time_task(name): print ('Run task %s (%s)...' % (name, os.getpid())) start = time.time() time.sleep(random.random() * 3) end = time.time() print ('Task %s runs %0.2f seconds.' % (name, (end - start))) if __name__=='__main__': print( 'Parent process %s.' % os.getpid()) p = Pool() for i in range(5): p.apply_async(long_time_task, args=(i,)) print( 'Waiting for all subprocesses done...') p.close() p.join() print ('All subprocesses done.')
结果:
Parent process 3692.
Waiting for all subprocesses done...
Run task 0 (2632)...
Run task 1 (8528)...
Run task 2 (10076)...
Run task 3 (10904)...
Run task 4 (4504)...
Task 3 runs 0.81 seconds.
Task 2 runs 2.00 seconds.
Task 0 runs 2.27 seconds.
Task 4 runs 2.69 seconds.
Task 1 runs 2.81 seconds.
All subprocesses done