from multiprocessing import Pool, TimeoutError
import os
import signal

def worker(i):
    pid = os.getpid()
    print('pid =', pid, flush=True)
    if i == 1:
        os.kill(pid, signal.SIGTERM)
    return i * i

if __name__ == '__main__':
    with Pool(1) as pool:
        async_results = [pool.apply_async(worker, args=(i,)) for i in (1, 2)]
        for async_result in async_results:
            try:
                value = async_result.get(.2) # Wait for a result
            except TimeoutError:
                print('Timeout!')
            else:
                print('result =', value)
