70 lines
1.5 KiB
Python
70 lines
1.5 KiB
Python
import asyncio
|
|
|
|
d = []
|
|
|
|
# async def task1():
|
|
# print("Running task 1")
|
|
# await asyncio.sleep(2)
|
|
# d.append(1)
|
|
# print("Task 1 completed")
|
|
|
|
# async def task2():
|
|
# print("Running task 2")
|
|
# await asyncio.sleep(3)
|
|
# d.append(2)
|
|
# print("Task 2 completed")
|
|
|
|
# async def task3():
|
|
# print("Running task 3")
|
|
# await asyncio.sleep(3)
|
|
# d.append(3)
|
|
# print("Task 3 completed")
|
|
|
|
# async def task4():
|
|
# print("Running task 4")
|
|
# await asyncio.sleep(1)
|
|
# print(d)
|
|
# d.append(4)
|
|
# print("Task 4 completed")
|
|
|
|
# async def main():
|
|
# # task_list1 = [task1(), task2()]
|
|
# task_list1 = [asyncio.create_task(task1()), asyncio.create_task(task2())]
|
|
# done, pending = await asyncio.wait(task_list1, return_when=asyncio.FIRST_COMPLETED)
|
|
# print("First task completed, starting task_list2")
|
|
# print(d)
|
|
|
|
# task_list2 = [task3(), task4()]
|
|
# await asyncio.gather(*task_list2)
|
|
|
|
|
|
# asyncio.run(main())
|
|
|
|
|
|
import asyncio
|
|
|
|
async def first_completed(*tasks):
|
|
tasks = [asyncio.create_task(task) for task in tasks]
|
|
|
|
done, pending = await asyncio.wait(tasks, return_when=asyncio.FIRST_COMPLETED)
|
|
|
|
# for task in pending:
|
|
# task.cancel()
|
|
|
|
# return done.pop().result()
|
|
|
|
async def task1():
|
|
await asyncio.sleep(1)
|
|
print('1')
|
|
# return 'task 1 result'
|
|
|
|
async def task2():
|
|
await asyncio.sleep(2)
|
|
print('2')
|
|
# return 'task 2 result'
|
|
|
|
async def main():
|
|
result = await first_completed(task1(), task2())
|
|
print(result)
|
|
|
|
asyncio.run(main()) |