if __name__ == '__main__': for item in ['A', 'B', 'C', 'D']: p = Process(target=func, args=(item,)) #p.daemon = True # 守护进程 p.start() p.join() # 阻塞等待 #p.terminate() # 终止进程 # PID-1684: A # PID-4112: B # PID-15832: C # PID-5188: D
#2 ProcessPoolExecutor from concurrent.futures import ProcessPoolExecutor, as_completed import time
defsquare(n): time.sleep(1) return n * n
if __name__ == '__main__': with ProcessPoolExecutor(max_workers=3) as executor: tasks = [executor.submit(square, num) for num inrange(10)] for future in as_completed(tasks): print(future.result()) # 0 1 4 9 16 25 36 49 64 81
3.Pipe
1 2 3 4 5 6 7 8 9 10 11 12
#1 Pipe,管道是全双工 from multiprocessing import Process, Pipe
# Process 16304 put A to queue. # Process 16304 put B to queue. # Process 16304 put C to queue. # Process 14676 get A from queue. # Process 16304 put D to queue. # Process 14676 get B from queue. # Process 14676 get C from queue. # Process 14676 get D from queue.
5.共享内存Manager
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
from multiprocessing import Process, Lock, shared_memory