多线程使用tqdm
import time
from concurrent import futures
from tqdm import tqdm
MAX_WORKER = 5
def delay(n):
time.sleep(n)
return f'result: {n}'
def main():
tasks, results = [], []
with futures.ThreadPoolExecutor(max_workers=MAX_WORKER) as executor:
for n in range(5):
tasks.append(executor.submit(delay, n))
for task in tqdm(futures.as_completed(tasks), total=len(tasks)):
results.append(task.result())
print(results)
if __name__ == '__main__':
main()
协程中使用tqdm
import tqdm
import asyncio
async def delay(n):
await asyncio.sleep(n)
return f'result: {n}'
async def main():
tasks, results = [], []
for n in range(5):
tasks.append(asyncio.create_task(delay(n)))
for t in tqdm(asyncio.as_completed(tasks), total=len(tasks)):
results.appent(await t)
print(results)
if __name__ == '__main__':
asyncio.run(main())