import threading from collections import deque n = 1000 q = deque() def f(): q.append(1) q.popleft() ts = [ threading.Thread(target=f) for i in range(n)] for t in ts: t.start() for t in ts: t.join()