inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)

파이썬 코루틴 활용

언패킹 관련 질문입니다.

283

Ted Lee

작성한 질문수 4

0

안녕하세요.

04-2-coroutine-fetcher.py에서 fetcher 함수에서 url을 언패킹하실 때 *를 사용하셨는데 아래 코드에서 가 어떻게 작동하는건지 알 수 있을까요?

result = await asyncio.gather(*[fetcher(session, url) for url in urls])

python 동시성 FastAPI

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

코드에서 *가 사용되는 부분은 언패킹의 기능을 수행합니다. *를 사용하면 urls 리스트 내의 모든 요소를 분리하여 개별적 함수 인수로 전달할 수 있습니다.

예를 들어, urls 리스트가 [’http://example.com’, ‘http://example.net’, ‘http://example.org’]와 같다면 fetcher 함수에 전달되는 인수는 다음과 같이 됩니다.

fetcher(session, ‘http://example.com’)
fetcher(session, ‘http://example.net’)
fetcher(session, ‘http://example.org’)

따라서, 리스트 내의 모든 url 주소를 각각의 fetcher 함수 인수로 전달하여 asyncio.gather() 함수에 사용할 수 있게 됩니다.

결과적으로, 위의 코드에서는 asyncio.gather() 함수에 urls 리스트 내의 모든 url 주소를 분리하여 전달하기 위해 *를 사용하고 있습니다.

참고로, asyncio.gather() 함수는 이들 모든 결과를 모아 하나의 리스트로 리턴합니다.

코드를 직접 실행해보면 동작 원리를 더 쉽게 이해하실 수 있을 거에요. 만약 코드 실행에 문제가 있거나 추가적인 궁금한 점이 있다면 댓글로 문의해주세요.

대규모 크롤링 시 동시 요청 수 제어 방법

0

94

2

AWS LighSail 접근 불가

0

134

1

강의상의 readme와 배포되어 있는 것이 다른 것 같아요

0

96

1

book_scraper.py 에서 import get_secret 관련 질문

0

100

1

ThreadPoolExecutor 중간에 멈추는 법

0

291

1

몽고Db 기초 질문

0

195

1

async await 문법 질문

0

237

1

멀티 스레딩 질문..

0

193

1

교안 제공은 안되나요?

0

227

1

TypeError: field Config is defined without type annotation

0

258

1

RuntimeWarning: Enable tracemalloc to get the object allocation traceback

0

1709

1

jinja2templates

0

244

1

몽고DB 설정 관련 질문

0

242

1

비동기 함수를 동기적인 실행으로 만드는 부분 질문입니다

1

308

2

proxy 사용 질문

0

261

1

AWS Lightsail SSL handshake failed 오류 문의드립니다.

0

491

1

동시성과 병렬성

0

326

1

python select linter ? 오류

1

739

2

수업질문

1

352

1

response 객체에서 키값으로 조회 시 KeyError 발생

0

568

1

from config import get_secret 질문

0

386

1

파이썬 코루틴활용 영상 질문

0

279

1

가상환경 설정 질문

0

316

1

pydantic import error

0

1225

2