diff --git a/docs/ko/docs/async.md b/docs/ko/docs/async.md index 690fd91ce..36f1ca6bf 100644 --- a/docs/ko/docs/async.md +++ b/docs/ko/docs/async.md @@ -56,7 +56,7 @@ def results(): ## 기술적 세부사항 { #technical-details } -최신 파이썬 버전은 **`async` 및 `await`** 문법과 함께 **“코루틴”**이라고 하는 것을 사용하는 **“비동기 코드”**를 지원합니다. +최신 파이썬 버전은 **“코루틴”**이라고 하는 것을 사용하는 **“비동기 코드”**를 **`async` 및 `await`** 문법과 함께 지원합니다. 아래 섹션들에서 해당 문장을 부분별로 살펴보겠습니다: @@ -93,7 +93,7 @@ def results(): "동기"(“비동기”의 반대)는 보통 "순차"라는 용어로도 불리는데, 컴퓨터/프로그램이 다른 작업으로 전환하기 전에 모든 단계를 순서대로 따르기 때문이며, 그 단계들에 기다림이 포함되어 있더라도 마찬가지입니다. -### 동시성과 버거 { #concurrency-and-burgers } +### 동시성과 햄버거 { #concurrency-and-burgers } 위에서 설명한 **비동기** 코드에 대한 개념은 때때로 **"동시성"**이라고도 불립니다. 이는 **"병렬성"**과는 다릅니다. @@ -101,19 +101,19 @@ def results(): 하지만 *동시성*과 *병렬성*의 세부적인 개념에는 꽤 차이가 있습니다. -차이를 보기 위해, 다음의 버거 이야기를 상상해보세요: +차이를 보기 위해, 다음의 햄버거 이야기를 상상해보세요: -### 동시 버거 { #concurrent-burgers } +### 동시 햄버거 { #concurrent-burgers } 여러분은 짝사랑 상대와 패스트푸드를 먹으러 갔고, 점원이 여러분 앞 사람들의 주문을 받는 동안 줄을 서서 기다립니다. 😍 -이제 여러분 차례가 되어, 여러분과 짝사랑 상대를 위해 매우 고급스러운 버거 2개를 주문합니다. 🍔🍔 +이제 여러분 차례가 되어, 여러분과 짝사랑 상대를 위해 매우 고급스러운 햄버거 2개를 주문합니다. 🍔🍔 -점원은 주방의 요리사에게 무언가를 말해, (지금은 앞선 손님들의 주문을 준비하고 있더라도) 여러분의 버거를 준비해야 한다는 것을 알게 합니다. +점원은 주방의 요리사에게 무언가를 말해, (지금은 앞선 손님들의 주문을 준비하고 있더라도) 여러분의 햄버거를 준비해야 한다는 것을 알게 합니다. @@ -123,19 +123,19 @@ def results(): -기다리는 동안, 여러분은 짝사랑 상대와 함께 자리를 고르고 앉아 오랫동안 대화를 나눕니다(여러분의 버거는 매우 고급스럽기 때문에 준비하는 데 시간이 좀 걸립니다). +기다리는 동안, 여러분은 짝사랑 상대와 함께 자리를 고르고 앉아 오랫동안 대화를 나눕니다(여러분의 햄버거는 매우 고급스럽기 때문에 준비하는 데 시간이 좀 걸립니다). -짝사랑 상대와 테이블에 앉아 버거를 기다리는 동안, 그 사람이 얼마나 멋지고 귀엽고 똑똑한지 감탄하며 시간을 보낼 수 있습니다 ✨😍✨. +짝사랑 상대와 테이블에 앉아 햄버거를 기다리는 동안, 그 사람이 얼마나 멋지고 귀엽고 똑똑한지 감탄하며 시간을 보낼 수 있습니다 ✨😍✨. 기다리며 대화하는 동안, 때때로 여러분은 카운터에 표시되는 번호를 확인해 여러분 차례인지 봅니다. -그러다 어느 순간 마침내 여러분 차례가 됩니다. 여러분은 카운터에 가서 버거를 받고, 테이블로 돌아옵니다. +그러다 어느 순간 마침내 여러분 차례가 됩니다. 여러분은 카운터에 가서 햄버거를 받고, 테이블로 돌아옵니다. -여러분과 짝사랑 상대는 버거를 먹으며 좋은 시간을 보냅니다. ✨ +여러분과 짝사랑 상대는 햄버거를 먹으며 좋은 시간을 보냅니다. ✨ @@ -153,29 +153,29 @@ def results(): 그 다음 여러분 차례가 되면, 여러분은 실제로 "생산적인" 일을 합니다. 메뉴를 처리하고, 무엇을 먹을지 결정하고, 짝사랑 상대의 선택을 확인하고, 결제하고, 올바른 현금이나 카드를 냈는지 확인하고, 정확히 청구되었는지 확인하고, 주문에 올바른 항목들이 들어갔는지 확인하는 등등을 합니다. -하지만 그 다음에는, 아직 버거를 받지 못했더라도, 버거가 준비될 때까지 기다려야 🕙 하므로 점원과의 작업은 "일시정지" ⏸ 상태입니다. +하지만 그 다음에는, 아직 햄버거를 받지 못했더라도, 햄버거가 준비될 때까지 기다려야 🕙 하므로 점원과의 작업은 "일시정지" ⏸ 상태입니다. 하지만 번호를 들고 카운터에서 벗어나 테이블에 앉으면, 여러분은 짝사랑 상대에게 관심을 전환 🔀 하고, 그에 대한 "작업" ⏯ 🤓 을 할 수 있습니다. 그러면 여러분은 다시 짝사랑 상대에게 작업을 거는 매우 "생산적인" 일을 하게 됩니다 😍. -그 다음 점원 💁 이 카운터 화면에 여러분 번호를 띄워 "버거를 만들었어요"라고 말하지만, 표시된 번호가 여러분 차례로 바뀌었다고 해서 즉시 미친 듯이 뛰어가지는 않습니다. 여러분은 여러분 번호를 갖고 있고, 다른 사람들은 그들의 번호를 갖고 있으니, 아무도 여러분 버거를 훔쳐갈 수 없다는 것을 알기 때문입니다. +그 다음 점원 💁 이 카운터 화면에 여러분 번호를 띄워 "햄버거를 만들었어요"라고 말하지만, 표시된 번호가 여러분 차례로 바뀌었다고 해서 즉시 미친 듯이 뛰어가지는 않습니다. 여러분은 여러분 번호를 갖고 있고, 다른 사람들은 그들의 번호를 갖고 있으니, 아무도 여러분 햄버거를 훔쳐갈 수 없다는 것을 알기 때문입니다. -그래서 여러분은 짝사랑 상대가 이야기를 끝낼 때까지 기다린 다음(현재 작업 ⏯ / 처리 중인 작업 🤓 을 끝내고), 부드럽게 미소 지으며 버거를 가지러 가겠다고 말합니다 ⏸. +그래서 여러분은 짝사랑 상대가 이야기를 끝낼 때까지 기다린 다음(현재 작업 ⏯ / 처리 중인 작업 🤓 을 끝내고), 부드럽게 미소 지으며 햄버거를 가지러 가겠다고 말합니다 ⏸. -그 다음 여러분은 카운터로 가서 🔀, 이제 끝난 초기 작업 ⏯ 으로 돌아와 버거를 받고, 감사 인사를 하고, 테이블로 가져옵니다. 이로써 카운터와 상호작용하는 그 단계/작업이 끝납니다 ⏹. 그리고 이는 새로운 작업인 "버거 먹기" 🔀 ⏯ 를 만들지만, 이전 작업인 "버거 받기"는 끝났습니다 ⏹. +그 다음 여러분은 카운터로 가서 🔀, 이제 끝난 초기 작업 ⏯ 으로 돌아와 햄버거를 받고, 감사 인사를 하고, 테이블로 가져옵니다. 이로써 카운터와 상호작용하는 그 단계/작업이 끝납니다 ⏹. 그리고 이는 새로운 작업인 "햄버거 먹기" 🔀 ⏯ 를 만들지만, 이전 작업인 "햄버거 받기"는 끝났습니다 ⏹. -### 병렬 버거 { #parallel-burgers } +### 병렬 햄버거 { #parallel-burgers } -이제 이것이 "동시 버거"가 아니라 "병렬 버거"라고 상상해봅시다. +이제 이것이 "동시 햄버거"가 아니라 "병렬 햄버거"라고 상상해봅시다. 여러분은 짝사랑 상대와 함께 병렬 패스트푸드를 먹으러 갑니다. 여러분은 여러 명(예: 8명)의 점원이 동시에 요리사이기도 하여 여러분 앞 사람들의 주문을 받는 동안 줄을 서 있습니다. -여러분 앞의 모든 사람들은, 8명의 점원 각각이 다음 주문을 받기 전에 바로 버거를 준비하러 가기 때문에, 카운터를 떠나지 않고 버거가 준비될 때까지 기다립니다. +여러분 앞의 모든 사람들은, 8명의 점원 각각이 다음 주문을 받기 전에 바로 햄버거를 준비하러 가기 때문에, 카운터를 떠나지 않고 햄버거가 준비될 때까지 기다립니다. -마침내 여러분 차례가 되어, 여러분과 짝사랑 상대를 위해 매우 고급스러운 버거 2개를 주문합니다. +마침내 여러분 차례가 되어, 여러분과 짝사랑 상대를 위해 매우 고급스러운 햄버거 2개를 주문합니다. 여러분이 돈을 냅니다 💸. @@ -183,21 +183,21 @@ def results(): 점원은 주방으로 갑니다. -여러분은 번호표가 없으므로, 다른 사람이 여러분보다 먼저 버거를 가져가지 못하도록 카운터 앞에 서서 기다립니다 🕙. +여러분은 번호표가 없으므로, 다른 사람이 여러분보다 먼저 햄버거를 가져가지 못하도록 카운터 앞에 서서 기다립니다 🕙. -여러분과 짝사랑 상대는 버거가 나오면 다른 사람이 끼어들어 가져가지 못하게 하느라 바쁘기 때문에, 짝사랑 상대에게 집중할 수 없습니다. 😞 +여러분과 짝사랑 상대는 햄버거가 나오면 다른 사람이 끼어들어 가져가지 못하게 하느라 바쁘기 때문에, 짝사랑 상대에게 집중할 수 없습니다. 😞 -이것은 "동기" 작업이며, 여러분은 점원/요리사 👨‍🍳 와 "동기화"되어 있습니다. 점원/요리사 👨‍🍳 가 버거를 완성해 여러분에게 주는 정확한 순간에 그 자리에 있어야 하므로, 여러분은 기다려야 🕙 하고, 그렇지 않으면 다른 사람이 가져갈 수도 있습니다. +이것은 "동기" 작업이며, 여러분은 점원/요리사 👨‍🍳 와 "동기화"되어 있습니다. 점원/요리사 👨‍🍳 가 햄버거를 완성해 여러분에게 주는 정확한 순간에 그 자리에 있어야 하므로, 여러분은 기다려야 🕙 하고, 그렇지 않으면 다른 사람이 가져갈 수도 있습니다. -그러다 점원/요리사 👨‍🍳 가 카운터 앞에서 오랫동안 기다린 🕙 끝에 마침내 버거를 가지고 돌아옵니다. +그러다 점원/요리사 👨‍🍳 가 카운터 앞에서 오랫동안 기다린 🕙 끝에 마침내 햄버거를 가지고 돌아옵니다. -여러분은 버거를 받아 짝사랑 상대와 테이블로 갑니다. +여러분은 햄버거를 받아 짝사랑 상대와 테이블로 갑니다. 그냥 먹고, 끝입니다. ⏹ @@ -213,15 +213,15 @@ def results(): --- -이 병렬 버거 시나리오에서, 여러분은 두 개의 프로세서(여러분과 짝사랑 상대)를 가진 컴퓨터/프로그램 🤖 이며, 둘 다 기다리고 🕙 오랫동안 "카운터에서 기다리기" 🕙 에 주의를 ⏯ 기울입니다. +이 병렬 햄버거 시나리오에서, 여러분은 두 개의 프로세서(여러분과 짝사랑 상대)를 가진 컴퓨터/프로그램 🤖 이며, 둘 다 기다리고 🕙 오랫동안 "카운터에서 기다리기" 🕙 에 주의를 ⏯ 기울입니다. -패스트푸드점에는 8개의 프로세서(점원/요리사)가 있습니다. 동시 버거 가게는 2개(점원 1명, 요리사 1명)만 있었을 것입니다. +패스트푸드점에는 8개의 프로세서(점원/요리사)가 있습니다. 동시 햄버거 가게는 2개(점원 1명, 요리사 1명)만 있었을 것입니다. 하지만 여전히 최종 경험은 그다지 좋지 않습니다. 😞 --- -이것이 버거의 병렬 버전에 해당하는 이야기입니다. 🍔 +이것이 햄버거의 병렬 버전에 해당하는 이야기입니다. 🍔 좀 더 "현실적인" 예시로, 은행을 상상해보세요. @@ -233,9 +233,9 @@ def results(): 아마 은행 🏦 업무를 보러 갈 때 짝사랑 상대 😍 를 데려가고 싶지는 않을 것입니다. -### 버거 예시의 결론 { #burger-conclusion } +### 햄버거 예시의 결론 { #burger-conclusion } -"짝사랑 상대와의 패스트푸드점 버거" 시나리오에서는 기다림 🕙 이 많기 때문에, 동시 시스템 ⏸🔀⏯ 을 사용하는 것이 훨씬 더 합리적입니다. +"짝사랑 상대와의 패스트푸드점 햄버거" 시나리오에서는 기다림 🕙 이 많기 때문에, 동시 시스템 ⏸🔀⏯ 을 사용하는 것이 훨씬 더 합리적입니다. 대부분의 웹 애플리케이션이 그렇습니다. @@ -269,7 +269,7 @@ def results(): 어디에도 기다림 🕙 은 없고, 집의 여러 장소에서 해야 할 일이 많을 뿐입니다. -버거 예시처럼 거실부터, 그 다음은 부엌처럼 순서를 정할 수도 있지만, 어떤 것도 기다리지 🕙 않고 계속 청소만 하기 때문에, 순서는 아무런 영향을 주지 않습니다. +햄버거 예시처럼 거실부터, 그 다음은 부엌처럼 순서를 정할 수도 있지만, 어떤 것도 기다리지 🕙 않고 계속 청소만 하기 때문에, 순서는 아무런 영향을 주지 않습니다. 순서가 있든 없든(동시성) 끝내는 데 걸리는 시간은 같고, 같은 양의 일을 하게 됩니다. @@ -316,7 +316,7 @@ burgers = await get_burgers(2) ```Python hl_lines="1" async def get_burgers(number: int): - # 버거를 만들기 위한 비동기 처리를 수행 + # 햄버거를 만들기 위한 비동기 처리를 수행 return burgers ``` @@ -325,7 +325,7 @@ async def get_burgers(number: int): ```Python hl_lines="2" # 비동기가 아닙니다 def get_sequential_burgers(number: int): - # 버거를 만들기 위한 순차 처리를 수행 + # 햄버거를 만들기 위한 순차 처리를 수행 return burgers ``` @@ -395,7 +395,7 @@ Starlette(그리고 **FastAPI**)는