Files
controller-data-analysis/test/test_asyncio_in_task_control.py
T
2023-02-10 17:35:55 +08:00

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())