# SOME DESCRIPTIVE TITLE. # Copyright (C) 2001-2017, Python Software Foundation # This file is distributed under the same license as the Python package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: Python 3.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-08 03:37+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dong-gweon Oh \n" "Language-Team: Korean (https://python.flowdas.com)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.7.0\n" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:7 msgid "Developing with asyncio" msgstr "asyncio로 개발하기" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:9 msgid "" "Asynchronous programming is different from classic \"sequential\" " "programming." msgstr "비동기 프로그래밍은 고전적인 \"순차적\" 프로그래밍과 다릅니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:12 msgid "This page lists common mistakes and traps and explains how to avoid them." msgstr "이 페이지는 흔한 실수와 함정을 나열하고, 이를 피하는 방법을 설명합니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:19 msgid "Debug Mode" msgstr "디버그 모드" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:21 msgid "" "By default asyncio runs in production mode. In order to ease the " "development asyncio has a *debug mode*." msgstr "기본적으로 asyncio는 프로덕션 모드로 실행됩니다. 개발을 쉽게 하려고 asyncio에는 *디버그 모드*\\를 제공합니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:24 msgid "There are several ways to enable asyncio debug mode:" msgstr "여러 가지 방법으로 asyncio 디버그 모드를 활성화할 수 있습니다:" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:26 msgid "Setting the :envvar:`PYTHONASYNCIODEBUG` environment variable to ``1``." msgstr ":envvar:`PYTHONASYNCIODEBUG` 환경 변수를 ``1``\\로 설정." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:28 msgid "Using the :ref:`Python Development Mode `." msgstr ":ref:`파이썬 개발 모드 ` 사용." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:30 msgid "Passing ``debug=True`` to :func:`asyncio.run`." msgstr "``debug=True``\\를 :func:`asyncio.run`\\로 전달." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:32 msgid "Calling :meth:`loop.set_debug`." msgstr ":meth:`loop.set_debug`\\를 호출." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:34 msgid "In addition to enabling the debug mode, consider also:" msgstr "디버그 모드를 활성화하는 것 외에도, 다음을 고려하십시오:" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:36 msgid "" "setting the log level of the :ref:`asyncio logger ` to " ":py:data:`logging.DEBUG`, for example the following snippet of code can " "be run at startup of the application::" msgstr "" ":ref:`asyncio 로거 `\\의 로그 수준을 :py:data:`logging.DEBUG`\\로 " "설정, 예를 들어 응용 프로그램 시작 시 다음 코드 조각을 실행할 수 있습니다::" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:42 msgid "" "configuring the :mod:`warnings` module to display :exc:`ResourceWarning` " "warnings. One way of doing that is by using the :option:`-W` ``default``" " command line option." msgstr "" ":exc:`ResourceWarning` 경고를 표시하도록 :mod:`warnings` 모듈을 구성. 이렇게 하는 한 가지 방법은 " ":option:`-W` ``default`` 명령 줄 옵션을 사용하는 것입니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:47 msgid "When the debug mode is enabled:" msgstr "디버그 모드가 활성화되면:" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:49 msgid "" "asyncio checks for :ref:`coroutines that were not awaited ` and logs them; this mitigates the \"forgotten " "await\" pitfall." msgstr "" "asyncio는 :ref:`기다리지 않은 코루틴 `\\을 검사하고 로그 " "합니다; 이것은 \"잊힌 await\" 함정을 완화합니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:53 msgid "" "Many non-threadsafe asyncio APIs (such as :meth:`loop.call_soon` and " ":meth:`loop.call_at` methods) raise an exception if they are called from " "a wrong thread." msgstr "" "많은 스레드 안전하지 않은 asyncio API(:meth:`loop.call_soon`\\과 :meth:`loop.call_at`" " 메서드와 같은)가 잘못된 스레드에서 호출될 때 예외를 발생시킵니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:57 msgid "" "The execution time of the I/O selector is logged if it takes too long to " "perform an I/O operation." msgstr "I/O 선택기의 실행 시간은 I/O 연산 수행에 너무 오래 걸리면 로그 됩니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:60 msgid "" "Callbacks taking longer than 100ms are logged. The " ":attr:`loop.slow_callback_duration` attribute can be used to set the " "minimum execution duration in seconds that is considered \"slow\"." msgstr "" "100ms보다 오래 걸리는 콜백이 로그 됩니다. :attr:`loop.slow_callback_duration` 어트리뷰트는 " "\"느린\" 것으로 간주할 최소 실행 시간(초)을 설정하는 데 사용될 수 있습니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:68 msgid "Concurrency and Multithreading" msgstr "동시성과 다중 스레드" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:70 msgid "" "An event loop runs in a thread (typically the main thread) and executes " "all callbacks and Tasks in its thread. While a Task is running in the " "event loop, no other Tasks can run in the same thread. When a Task " "executes an ``await`` expression, the running Task gets suspended, and " "the event loop executes the next Task." msgstr "" "이벤트 루프는 스레드(일반적으로 주 스레드)에서 실행되며 그 스레드에서 모든 콜백과 태스크를 실행합니다. 태스크가 이벤트 루프에서 " "실행되는 동안, 다른 태스크는 같은 스레드에서 실행될 수 없습니다. 태스크가 ``await`` 표현식을 실행하면, 실행 중인 " "태스크가 일시 중지되고 이벤트 루프는 다음 태스크를 실행합니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:76 msgid "" "To schedule a :term:`callback` from another OS thread, the " ":meth:`loop.call_soon_threadsafe` method should be used. Example::" msgstr "" "다른 OS 스레드에서 :term:`콜백 `\\을 예약하려면, " ":meth:`loop.call_soon_threadsafe` 메서드를 사용해야 합니다. 예::" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:81 msgid "" "Almost all asyncio objects are not thread safe, which is typically not a " "problem unless there is code that works with them from outside of a Task " "or a callback. If there's a need for such code to call a low-level " "asyncio API, the :meth:`loop.call_soon_threadsafe` method should be used," " e.g.::" msgstr "" "거의 모든 asyncio 객체는 스레드 안전하지 않습니다. 태스크나 콜백 외부에서 작동하는 코드가 없으면 일반적으로 문제가 되지 " "않습니다. 그러한 코드가 저수준 asyncio API를 호출해야 하면, :meth:`loop.call_soon_threadsafe`" " 메서드를 사용해야 합니다, 예를 들어::" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:89 msgid "" "To schedule a coroutine object from a different OS thread, the " ":func:`run_coroutine_threadsafe` function should be used. It returns a " ":class:`concurrent.futures.Future` to access the result::" msgstr "" "다른 OS 스레드에서 코루틴 객체를 예약하려면, :func:`run_coroutine_threadsafe` 함수를 사용해야 합니다." " 결과에 액세스할 수 있도록 :class:`concurrent.futures.Future`\\를 반환합니다::" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:102 msgid "" "To handle signals and to execute subprocesses, the event loop must be run" " in the main thread." msgstr "시그널을 처리하고 자식 프로세스를 실행하려면, 이벤트 루프를 메인 스레드에서 실행해야 합니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:105 msgid "" "The :meth:`loop.run_in_executor` method can be used with a " ":class:`concurrent.futures.ThreadPoolExecutor` to execute blocking code " "in a different OS thread without blocking the OS thread that the event " "loop runs in." msgstr "" ":meth:`loop.run_in_executor` 메서드는 " ":class:`concurrent.futures.ThreadPoolExecutor`\\와 함께 사용되어, 이벤트 루프가 실행되는 " "OS 스레드를 블록하지 않고 다른 OS 스레드에서 블로킹 코드를 실행할 수 있습니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:110 msgid "" "There is currently no way to schedule coroutines or callbacks directly " "from a different process (such as one started with " ":mod:`multiprocessing`). The :ref:`Event Loop Methods ` section lists APIs that can read from pipes and watch file " "descriptors without blocking the event loop. In addition, asyncio's " ":ref:`Subprocess ` APIs provide a way to start a " "process and communicate with it from the event loop. Lastly, the " "aforementioned :meth:`loop.run_in_executor` method can also be used with " "a :class:`concurrent.futures.ProcessPoolExecutor` to execute code in a " "different process." msgstr "" "현재 다른 프로세스(가령 :mod:`multiprocessing`\\으로 시작된 프로세스)에서 직접 코루틴이나 콜백을 예약할 방법은" " 없습니다. :ref:`이벤트 루프 메서드 ` 섹션은 이벤트 루프를 블록하지 않고 파이프를 읽고" " 파일 기술자를 감시할 수 있는 API를 나열합니다. 또한 asyncio의 :ref:`서브 프로세스 ` API는 프로세스를 시작하고 이벤트 루프에서 프로세스와 통신하는 방법을 제공합니다. 마지막으로, 앞서 언급한" " :meth:`loop.run_in_executor` 메서드를 " ":class:`concurrent.futures.ProcessPoolExecutor`\\와 함께 사용하여 다른 프로세스에서 코드를 " "실행할 수도 있습니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:124 msgid "Running Blocking Code" msgstr "블로킹 코드 실행하기" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:126 msgid "" "Blocking (CPU-bound) code should not be called directly. For example, if" " a function performs a CPU-intensive calculation for 1 second, all " "concurrent asyncio Tasks and IO operations would be delayed by 1 second." msgstr "" "블로킹 (CPU 병목) 코드는 직접 호출하면 안 됩니다. 예를 들어, 함수가 CPU 집약적인 계산을 1초 동안 수행하면, 모든 동시" " asyncio 태스크와 IO 연산이 1초 지연됩니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:131 msgid "" "An executor can be used to run a task in a different thread or even in a " "different process to avoid blocking the OS thread with the event loop. " "See the :meth:`loop.run_in_executor` method for more details." msgstr "" "실행기를 사용하여, 블로킹이 이벤트 루프가 실행되는 OS 스레드를 블록하지 않도록, 다른 스레드 또는 다른 프로세스에서 태스크를 " "실행할 수 있습니다. 자세한 내용은 :meth:`loop.run_in_executor` 메서드를 참조하십시오." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:140 msgid "Logging" msgstr "로깅" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:142 msgid "" "asyncio uses the :mod:`logging` module and all logging is performed via " "the ``\"asyncio\"`` logger." msgstr "asyncio는 :mod:`logging` 모듈을 사용하고, 모든 로깅은 ``\"asyncio\"`` 로거를 통해 수행됩니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:145 msgid "" "The default log level is :py:data:`logging.INFO`, which can be easily " "adjusted::" msgstr "기본 로그 수준은 :py:data:`logging.INFO`\\며, 쉽게 조정할 수 있습니다::" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:154 msgid "Detect never-awaited coroutines" msgstr "await 하지 않은 코루틴 감지" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:156 msgid "" "When a coroutine function is called, but not awaited (e.g. ``coro()`` " "instead of ``await coro()``) or the coroutine is not scheduled with " ":meth:`asyncio.create_task`, asyncio will emit a :exc:`RuntimeWarning`::" msgstr "" "코루틴 함수가 호출되었지만 기다리지 않을 때(예를 들어, ``await coro()`` 대신 ``coro()``)나 코루틴이 " ":meth:`asyncio.create_task`\\로 예약되지 않으면 asyncio가 :exc:`RuntimeWarning`\\을" " 방출합니다::" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:171 #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:216 msgid "Output::" msgstr "출력::" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:176 #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:232 msgid "Output in debug mode::" msgstr "디버그 모드에서의 출력::" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:189 msgid "" "The usual fix is to either await the coroutine or call the " ":meth:`asyncio.create_task` function::" msgstr "일반적인 수정법은 코루틴을 await 하거나 :meth:`asyncio.create_task` 함수를 호출하는 것입니다::" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:197 msgid "Detect never-retrieved exceptions" msgstr "전달되지 않은 예외 감지" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:199 msgid "" "If a :meth:`Future.set_exception` is called but the Future object is " "never awaited on, the exception would never be propagated to the user " "code. In this case, asyncio would emit a log message when the Future " "object is garbage collected." msgstr "" ":meth:`Future.set_exception`\\가 호출되었지만, Future 객체가 await 되지 않으면, 예외는 절대로 " "사용자 코드로 전파되지 않습니다. 이럴 때, Future 객체가 가비지 수집될 때 asyncio가 로그 메시지를 출력합니다." #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:204 msgid "Example of an unhandled exception::" msgstr "처리되지 않은 예외의 예::" #: /Users/flowdas/works/docs/python-docs-ko/src/Doc/library/asyncio-dev.rst:227 msgid "" ":ref:`Enable the debug mode ` to get the traceback " "where the task was created::" msgstr "태스크가 만들어진 곳의 트레이스백을 얻으려면 :ref:`디버그 모드를 활성화하세요 `::"