from multiprocessing import Process, Queue, Lock import time lock = Lock() def f(q, a): lock.acquire() if a == 3: time.sleep(2) q.put(666) print('input') if a == 4: data = q.get() print(data) print(a) lock.release() if __name__ == '__main__': q = Queue() p_list = [] for i in range(8): p = Process(target=f, args=(q, i,)) p_list.append(p) for p in p_list: p.start() print('-=------') for p in p_list: p.join()