t = time.time() s = fastthreadpool.Semaphore() for _ in range(200000): s.release() s.acquire() print("fastthreadpool.Semaphore", time.time() - t) def Worker(_i): s.release() s.acquire() t = time.time() pool = ThreadPool() s.release() s.release() pool.map(Worker, range(200000)) pool.close() pool.join() print("ThreadPool.map", time.time() - t) t = time.time() pool = fastthreadpool.Pool() s.release() s.release() pool.map(Worker, range(200000)) pool.shutdown() print("fastthreadpool.map", time.time() - t)