[python] asyncio 모듈의 'current_task()'

gunny·2024년 6월 9일
0

Python

목록 보기
28/29

asyncio - current_task

  • asyncio 모듈의 current_task() 함수는 현재 실행 중인 코루틴의 Task 객체를 반환한다. 이 함수는 비동기 프로그래밍에서 현재 실행 중인 태스크를 식별하고 관리하는데 사용된다.

current_task() 함수

  1. 태스크 식별 : 여러 개의 코루틴이 동시에 실행되는 경우, 어떤 코루틴이 현재 실행 중인지 확인해야 할 때 사용
    current_task()를 호출해 현재 실행 중인 코루틴의 Task 객체를 얻을 수 있음

  2. 태스크 관리 : 현재 실행 중인 코루틴의 Task 객체를 통해 해당 코루틴을 관리할 수 있음. 코루틴을 취소하거나 상태를 확인하고 코루틴 실행을 임시 중단할 수 있음

  3. 디버깅 : 디버깅 목적으로 현재 실행 중인 코루틴 정보를 얻을 때 사용 가능
    어떤 코루틴이 문제를 일으켰는지 또는 어떤 작업이 현재 실행 중인지 추적할 수 있음

예시 코드

import asyncio

async def my_coroutine():
    task = asyncio.current_task()
    print(f"Current task: \n {task}")

async def main():
    task = asyncio.create_task(my_coroutine())
    await task

await main()

## ouput
Current task: 
 <Task pending name='Task-12' coro=<my_coroutine() running at /var/folders/ck/_fdzhfzx2gg3l36rzbfxlthc0000gn/T/ipykernel_3193/2115041344.py:3> cb=[<TaskWakeupMethWrapper object at 0x10c2836d0>()]>

ChatGPT
asyncio.current_task() 함수는 현재 실행 중인 코루틴(task)을 반환합니다. 이 함수는 현재 실행 중인 코루틴이 없는 경우 None을 반환합니다. 이 함수를 사용하면 현재 실행 중인 코루틴에 접근할 수 있으므로, 예를 들어 코루틴 내에서 자기 자신에 대한 참조를 얻을 때 사용할 수 있습니다.

다음은 asyncio.current_task() 함수의 간단한 예시 코드입니다:

python
코드 복사
import asyncio

async def my_coroutine():
task = asyncio.current_task()
print("Current task:", task)

async def main():
task = asyncio.create_task(my_coroutine())
await task

  • 위의 코드의 my_coroutine() 함수에서 asyncio.current_task()를 호출하여 현재 실행 중인 코루틴을 가져온다. 그리고 main() 함수에서 이 코루틴을 실행하고 결과를 출력한다.
    Jupyter Notebook에서는 await main()을 호출하여 코루틴을 실행한다.
profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글