비동기 프로그래밍

빠르게 반응하는 거래 소프트웨어를 구축하기 위해 최소한 비동기 프로그래밍에 대한 기본적인 이해가 있다면 가장 좋습니다.

대부분의 시간에 사용되는 동기식 접근 방식의 문제점은 프로그램이 추가 작업을 진행하기 전에 전용 소스에서 데이터 입력을 기다려야 한다는 것입니다. WebSocket에 연결하고 동기식 소프트웨어를 사용하여 거래소에서 틱 데이터 업데이트 또는 공개 주문 업데이트를 받는 것은 거의 불가능합니다.

비동기 프로그래밍을 통해 데이터 입력 대기를 건너뛰고 제어 스트림 또는 데이터 처리 스트림으로 진행할 수 있습니다. 이 접근 방식은 소프트웨어 속도와 성능을 근본적으로 향상시킵니다.



asyncio python 라이브러리를 사용하여 비동기 애플리케이션을 빌드합니다.

비동기 소프트웨어 구축을 시작하려면 몇 가지 개념을 배워야 합니다.

첫째, 함수는 자바스크립트에서와 같이 비동기 단어로 비동기로 표시됩니다. 예시:



async def my_function()



둘째, 대기 단어를 사용하여 한 스트림에서 다른 스트림으로 제어를 전환할 수 있는 위치를 프로그램에 알립니다. 예시:



await asyncio.sleep(0)



이 코드 줄은 데이터 입력이나 일부 긴 계산을 기다리지 않도록 프로그램에 지시하는 것 외에는 아무 것도 하지 않으므로 프로그램이 다른 작업으로 전환할 수 있습니다.

셋째, 비동기식 소프트웨어를 구축할 때 기능뿐만 아니라 작업도 운영합니다. 작업에는 내부에 하나 이상의 기능이 포함될 수 있습니다.

예시:



async def input_func():
    pass


async def input_task():
    await asyncio.sleep(0)
    await self.input_func()



그리고 마지막으로 루프입니다. 우리의 작업은 '제어 스트림'이라고 할 수 있는 루프 내에서 실행됩니다.

예시:



ioloop = asyncio.get_event_loop()
tasks = [ioloop.create_task(input_task()), ioloop.create_task(another_task())]
wait_tasks = asyncio.wait(tasks)
ioloop.run_until_complete(wait_tasks)




이것은 간단한 비동기 애플리케이션의 예입니다. this GitHub repo에서 찾을 수 있습니다.

좋은 웹페이지 즐겨찾기