from multiprocessing import Pool, Lock, set_start_method
import time
import sys
import os

def func(t):
    print('starting t=', t, f'({os.getpid()})', flush=True)
    time.sleep(t)
    print('\tfinished t=', t, flush=True)
    return t, os.getpid()

if __name__=='__main__':
    start = time.time()
    times = [10.1, 10.2, 5.1, 1.2, 1.1, 5.2, 1.3, 1.4]
    with Pool(3) as p:
        res = p.map(func, times, 3)
    print(res)

    print('total time', time.time() - start)
        
    
    start = time.time()
    times = [10.1, 10.2, 5.1, 1.2, 1.1, 5.2, 1.3, 1.4]
    with Pool(3) as p:
        results = [p.apply_async(func, (t,)) for t in times]
        print([res.get() for res in results])
    print('total time', time.time() - start)
    
    