import multiprocessing import time from multiprocessing import Pool file = "/tmp/tmp123123" from concurrent.futures import ThreadPoolExecutor from time import sleep def writer(): with open(file, "w+b") as f: for i in range(0, 10): f.write(("%s"%(i)).encode("utf8")) time.sleep(0.5) print("writing ", time.time()) def reader(): with open(file, "rb") as f: for i in range(0,10): lines = f.readlines() time.sleep(0.5) print("read ", time.time()) pool = Pool(5) with pool as p: p.apply_async(writer) p.apply_async(reader) pool.join() executor = ThreadPoolExecutor(2) future1 = executor.submit(writer) future2 = executor.submit(reader) print(future1.result()) print(future2.result())