Process — manual process management. Pool — managed worker pool with convenient methods.
1from multiprocessing import Process, Pool23# Process — manual control4def worker(n):5 return n ** 267processes = []8for i in range(4):9 p = Process(target=worker, args=(i,))10 p.start()11 processes.append(p)1213for p in processes:14 p.join()1516# Pool — managed workers17with Pool(4) as pool:18 # map — apply function to each item19 results = pool.map(worker, range(10))2021 # apply_async — single call22 result = pool.apply_async(worker, (5,))23 print(result.get()) # 252425 # starmap — unpack arguments26 def add(a, b):27 return a + b28 results = pool.starmap(add, [(1, 2), (3, 4)])2930 # imap — lazy map31 for result in pool.imap(worker, range(10)):32 print(result)
Use Pool when: