mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 15:04:05 +08:00
1 line
25 KiB
HTML
1 line
25 KiB
HTML
<div class="body" role="main"><div class="section" id="module-asyncio"><h1><span class="yiyi-st" id="yiyi-10">18.5. <a class="reference internal" href="#module-asyncio" title="asyncio: Asynchronous I/O, event loop, coroutines and tasks."><code class="xref py py-mod docutils literal"><span class="pre">asyncio</span></code></a> — 异步 I/O 、事件循环、 协程和任务 </span></h1><div class="versionadded"><p><span class="yiyi-st" id="yiyi-11"><span class="versionmodified"> 3.4 版本中新加入。</span></span></p></div><p><span class="yiyi-st" id="yiyi-12"><strong>源代码︰</strong><a class="reference external" href="https://hg.python.org/cpython/file/3.5/Lib/asyncio/">lib/asyncio/</a></span></p><div class="admonition note"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-13">注意</span></p><p class="last"><span class="yiyi-st" id="yiyi-14">asyncio包已经在<a class="reference internal" href="../glossary.html#term-provisional-package"><span class="xref std std-term">临时基础</span></a>中包含在标准库中。</span><span class="yiyi-st" id="yiyi-15">如果核心开发人员认为必要,则可能会发生向后不兼容的更改(直到并包括模块的删除)。</span></p></div><p><span class="yiyi-st" id="yiyi-16">此模块为编写单线程并发代码提高基础架构,通过使用协程、套接字和其他资源的 I/O 多路复用,运行网络客户端和服务器,以及其他相关的基元。</span><span class="yiyi-st" id="yiyi-17">以下是更详细的软件包内容列表:</span></p><ul class="simple"><li><span class="yiyi-st" id="yiyi-18">各种系统具体实现的可插拔 <a class="reference internal" href="asyncio-eventloop.html#asyncio-event-loop"><span>事件循环</span></a> ;</span></li><li><span class="yiyi-st" id="yiyi-19"><a class="reference internal" href="asyncio-protocol.html#asyncio-transport"><span>传输</span></a> 和 <a class="reference internal" href="asyncio-protocol.html#asyncio-protocol"><span>协议</span></a> 抽象(类似于 <a class="reference external" href="https://twistedmatrix.com/trac/">Twisted</a> 里的那些) ;</span></li><li><span class="yiyi-st" id="yiyi-20">具体支持 TCP、 UDP、 SSL、 子进程管道,延迟调用,和其他 (有些可能依赖于系统);</span></li><li><span class="yiyi-st" id="yiyi-21">一个模仿 <a class="reference internal" href="concurrent.futures.html#module-concurrent.futures" title="concurrent.futures: Execute computations concurrently using threads or processes."><code class="xref py py-mod docutils literal"><span class="pre">concurrent.futures</span></code></a> 模块但适合在事件循环中使用的 <a class="reference internal" href="asyncio-task.html#asyncio.Future" title="asyncio.Future"><code class="xref py py-class docutils literal"><span class="pre">Future</span></code></a> 类;</span></li><li><span class="yiyi-st" id="yiyi-22">基于 <code class="docutils literal"><span class="pre">yield</span> <span class="pre">from</span></code> (<span class="target" id="index-0"></span> <a class="pep reference external" href="https://www.python.org/dev/peps/pep-0380"><strong>PEP 380</strong></a>)的协程和任务帮助以顺序的方式编写并发代码;</span></li><li><span class="yiyi-st" id="yiyi-23">取消操作支持 <a class="reference internal" href="asyncio-task.html#asyncio.Future" title="asyncio.Future"><code class="xref py py-class docutils literal"><span class="pre">Future</span></code></a> 和协程;</span></li><li><span class="yiyi-st" id="yiyi-24">单线程的协程间使用的 <a class="reference internal" href="asyncio-sync.html#asyncio-sync"><span>同步基元</span></a> 类似于 <a class="reference internal" href="threading.html#module-threading" title="threading: Thread-based parallelism."><code class="xref py py-mod docutils literal"><span class="pre">threading</span></code></a> 模块里那些;</span></li><li><span class="yiyi-st" id="yiyi-25">一个接口,用于将工作传递到线程池,在绝对,明确不得不使用一个阻塞I / O调用的库的时候。</span></li></ul><p><span class="yiyi-st" id="yiyi-26">异步编程比经典的"顺序"编程更复杂︰ 查看 <a class="reference internal" href="asyncio-dev.html#asyncio-dev"><span>Develop with asyncio</span></a> 页面,其中列出了常见的陷阱,并解释了如何避免它们。</span><span class="yiyi-st" id="yiyi-27">在开发期间 <a class="reference internal" href="asyncio-dev.html#asyncio-debug-mode"><span>启用调试模式</span></a> 以检测常见问题。</span></p><p><span class="yiyi-st" id="yiyi-28">目录:</span></p><div class="toctree-wrapper compound"><ul><li class="toctree-l1"><span class="yiyi-st" id="yiyi-51"><a class="reference internal" href="asyncio-eventloop.html">18.5.1.基础事件循环</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-29"><a class="reference internal" href="asyncio-eventloop.html#run-an-event-loop">18.5.1.1.运行事件循环</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-30"><a class="reference internal" href="asyncio-eventloop.html#calls">18.5.1.2. 调用</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-31"><a class="reference internal" href="asyncio-eventloop.html#delayed-calls">18.5.1.3.延迟调用</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-32"><a class="reference internal" href="asyncio-eventloop.html#futures">18.5.1.4.期货</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-33"><a class="reference internal" href="asyncio-eventloop.html#tasks">18.5.1.5.任务</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-34"><a class="reference internal" href="asyncio-eventloop.html#creating-connections">18.5.1.6.创建连接</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-35"><a class="reference internal" href="asyncio-eventloop.html#creating-listening-connections">18.5.1.7.创建侦听连接</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-36"><a class="reference internal" href="asyncio-eventloop.html#watch-file-descriptors">18.5.1.8.看文件描述符</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-37"><a class="reference internal" href="asyncio-eventloop.html#low-level-socket-operations">18.5.1.9.低级的套接字操作</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-38"><a class="reference internal" href="asyncio-eventloop.html#resolve-host-name">18.5.1.10.解决主机名</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-39"><a class="reference internal" href="asyncio-eventloop.html#connect-pipes">18.5.1.11.连接管道</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-40"><a class="reference internal" href="asyncio-eventloop.html#unix-signals">18.5.1.12.UNIX 信号</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-41"><a class="reference internal" href="asyncio-eventloop.html#executor">18.5.1.13.执行者</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-42"><a class="reference internal" href="asyncio-eventloop.html#error-handling-api">18.5.1.14.错误处理 API</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-43"><a class="reference internal" href="asyncio-eventloop.html#debug-mode">18.5.1.15.调试模式</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-44"><a class="reference internal" href="asyncio-eventloop.html#server">18.5.1.16.服务器</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-45"><a class="reference internal" href="asyncio-eventloop.html#handle">18.5.1.17.处理</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-50"><a class="reference internal" href="asyncio-eventloop.html#event-loop-examples">18.5.1.18.事件循环例子</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-46"><a class="reference internal" href="asyncio-eventloop.html#hello-world-with-call-soon"> 18.5.1.18.1. Hello World with call_soon()</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-47"><a class="reference internal" href="asyncio-eventloop.html#display-the-current-date-with-call-later">18.5.1.18.2.显示当前日期与 call_later()</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-48"><a class="reference internal" href="asyncio-eventloop.html#watch-a-file-descriptor-for-read-events">18.5.1.18.3.看一个文件描述符读取事件</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-49"><a class="reference internal" href="asyncio-eventloop.html#set-signal-handlers-for-sigint-and-sigterm">18.5.1.18.4.设置信号情报和 SIGTERM 信号处理程序</a></span></li></ul></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-60"><a class="reference internal" href="asyncio-eventloops.html">18.5.2.事件循环</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-52"><a class="reference internal" href="asyncio-eventloops.html#event-loop-functions">18.5.2.1.事件循环函数</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-53"><a class="reference internal" href="asyncio-eventloops.html#available-event-loops">18.5.2.2.可用事件循环</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-56"><a class="reference internal" href="asyncio-eventloops.html#platform-support">18.5.2.3.平台支持</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-54"><a class="reference internal" href="asyncio-eventloops.html#windows"> 18.5.2.3.1. 视窗 T0></a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-55"><a class="reference internal" href="asyncio-eventloops.html#mac-os-x"> 18.5.2.3.2. Mac OS X</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-57"><a class="reference internal" href="asyncio-eventloops.html#event-loop-policies-and-the-default-policy">18.5.2.4.事件循环策略和默认策略</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-58"><a class="reference internal" href="asyncio-eventloops.html#event-loop-policy-interface">18.5.2.5.事件循环政策接口</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-59"><a class="reference internal" href="asyncio-eventloops.html#access-to-the-global-loop-policy">18.5.2.6.获取global循环政策</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-73"><a class="reference internal" href="asyncio-task.html">18.5.3.任务和协同程序</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-64"><a class="reference internal" href="asyncio-task.html#coroutines">18.5.3.1.协程</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-61"><a class="reference internal" href="asyncio-task.html#example-hello-world-coroutine">18.5.3.1.1.示例:Hello World协程</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-62"><a class="reference internal" href="asyncio-task.html#example-coroutine-displaying-the-current-date">18.5.3.1.2.示例:协程显示当前日期</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-63"><a class="reference internal" href="asyncio-task.html#example-chain-coroutines">18.5.3.1.3.示例:链协程</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-65"><a class="reference internal" href="asyncio-task.html#invalidstateerror">18.5.3.2. InvalidStateError 0>></a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-66"><a class="reference internal" href="asyncio-task.html#timeouterror"> 18.5.3.3. TimeoutError T0></a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-69"><a class="reference internal" href="asyncio-task.html#future">18.5.3.4. Future</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-67"><a class="reference internal" href="asyncio-task.html#example-future-with-run-until-complete">18.5.3.4.1. 实例: Future 与 run_until_complete()</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-68"><a class="reference internal" href="asyncio-task.html#example-future-with-run-forever">18.5.3.4.2.示例:未来与run_forever()</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-71"><a class="reference internal" href="asyncio-task.html#task">18.5.3.5.任务</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-70"><a class="reference internal" href="asyncio-task.html#example-parallel-execution-of-tasks">18.5.3.5.1.示例:并行执行任务</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-72"><a class="reference internal" href="asyncio-task.html#task-functions">18.5.3.6.任务函数</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-93"><a class="reference internal" href="asyncio-protocol.html">18.5.4.传输和协议 (基于回调的 API)</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-79"><a class="reference internal" href="asyncio-protocol.html#transports">18.5.4.1.传输</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-74"><a class="reference internal" href="asyncio-protocol.html#basetransport"> 18.5.4.1.1. BaseTransport T0></a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-75"><a class="reference internal" href="asyncio-protocol.html#readtransport"> 18.5.4.1.2. ReadTransport T0></a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-76"><a class="reference internal" href="asyncio-protocol.html#writetransport"> 18.5.4.1.3. WriteTransport T0></a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-77"><a class="reference internal" href="asyncio-protocol.html#datagramtransport"> 18.5.4.1.4. DatagramTransport T0></a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-78"><a class="reference internal" href="asyncio-protocol.html#basesubprocesstransport"> 18.5.4.1.5. BaseSubprocessTransport T0></a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-86"><a class="reference internal" href="asyncio-protocol.html#protocols">18.5.4.2.协议</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-80"><a class="reference internal" href="asyncio-protocol.html#protocol-classes">18.5.4.2.1.协议类</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-81"><a class="reference internal" href="asyncio-protocol.html#connection-callbacks">18.5.4.2.2.连接回调</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-82"><a class="reference internal" href="asyncio-protocol.html#streaming-protocols">18.5.4.2.3.流协议</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-83"><a class="reference internal" href="asyncio-protocol.html#datagram-protocols">18.5.4.2.4.数据报协议</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-84"><a class="reference internal" href="asyncio-protocol.html#flow-control-callbacks">18.5.4.2.5.流控制回调</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-85"><a class="reference internal" href="asyncio-protocol.html#coroutines-and-protocols">18.5.4.2.6.协程和协议</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-92"><a class="reference internal" href="asyncio-protocol.html#protocol-examples">18.5.4.3.协议示例</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-87"><a class="reference internal" href="asyncio-protocol.html#tcp-echo-client-protocol">18.5.4.3.1. TCP回显客户端协议</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-88"><a class="reference internal" href="asyncio-protocol.html#tcp-echo-server-protocol">18.5.4.3.2. TCP echo服务器协议</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-89"><a class="reference internal" href="asyncio-protocol.html#udp-echo-client-protocol"> 18.5.4.3.3. UDP回显客户端协议</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-90"><a class="reference internal" href="asyncio-protocol.html#udp-echo-server-protocol">18.5.4.3.4. UDP echo服务器协议</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-91"><a class="reference internal" href="asyncio-protocol.html#register-an-open-socket-to-wait-for-data-using-a-protocol">18.5.4.3.5.注册打开的套接字以使用协议</a>等待数据</span></li></ul></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-105"><a class="reference internal" href="asyncio-stream.html">18.5.5.流 (协同基于 API)</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-94"><a class="reference internal" href="asyncio-stream.html#stream-functions">18.5.5.1.流函数</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-95"><a class="reference internal" href="asyncio-stream.html#streamreader"> 18.5.5.2. 的StreamReader T0></a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-96"><a class="reference internal" href="asyncio-stream.html#streamwriter"> 18.5.5.3. StreamWriter的 T0></a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-97"><a class="reference internal" href="asyncio-stream.html#streamreaderprotocol"> 18.5.5.4. StreamReaderProtocol T0></a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-98"><a class="reference internal" href="asyncio-stream.html#incompletereaderror"> 18.5.5.5. IncompleteReadError T0></a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-99"><a class="reference internal" href="asyncio-stream.html#limitoverrunerror"> 18.5.5.6. LimitOverrunError T0></a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-104"><a class="reference internal" href="asyncio-stream.html#stream-examples">18.5.5.7.流示例</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-100"><a class="reference internal" href="asyncio-stream.html#tcp-echo-client-using-streams">18.5.5.7.1. TCP echo客户端使用流</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-101"><a class="reference internal" href="asyncio-stream.html#tcp-echo-server-using-streams">18.5.5.7.2. TCP echo服务器使用流</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-102"><a class="reference internal" href="asyncio-stream.html#get-http-headers">18.5.5.7.3.获取HTTP标头</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-103"><a class="reference internal" href="asyncio-stream.html#register-an-open-socket-to-wait-for-data-using-streams">18.5.5.7.4.注册打开的套接字以使用流等待数据</a></span></li></ul></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-115"><a class="reference internal" href="asyncio-subprocess.html">18.5.6.子过程</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-106"><a class="reference internal" href="asyncio-subprocess.html#windows-event-loop">18.5.6.1. Windows事件循环</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-107"><a class="reference internal" href="asyncio-subprocess.html#create-a-subprocess-high-level-api-using-process">18.5.6.2.创建子流程:使用Process</a>创建高级API</span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-108"><a class="reference internal" href="asyncio-subprocess.html#create-a-subprocess-low-level-api-using-subprocess-popen">18.5.6.3.创建子进程:使用subprocess.Popen</a>的低级API</span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-109"><a class="reference internal" href="asyncio-subprocess.html#constants">18.5.6.4.常数</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-110"><a class="reference internal" href="asyncio-subprocess.html#process">18.5.6.5.过程</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-111"><a class="reference internal" href="asyncio-subprocess.html#subprocess-and-threads">18.5.6.6.子进程和线程</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-114"><a class="reference internal" href="asyncio-subprocess.html#subprocess-examples">18.5.6.7.子过程示例</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-112"><a class="reference internal" href="asyncio-subprocess.html#subprocess-using-transport-and-protocol">18.5.6.7.1.使用传输和协议的子流程</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-113"><a class="reference internal" href="asyncio-subprocess.html#subprocess-using-streams">18.5.6.7.2.使用流的子流程</a></span></li></ul></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-123"><a class="reference internal" href="asyncio-sync.html">18.5.7.同步原语</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-119"><a class="reference internal" href="asyncio-sync.html#locks">18.5.7.1.锁定</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-116"><a class="reference internal" href="asyncio-sync.html#lock">18.5.7.1.1.锁定</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-117"><a class="reference internal" href="asyncio-sync.html#event">18.5.7.1.2.事件</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-118"><a class="reference internal" href="asyncio-sync.html#condition">18.5.7.1.3.条件</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-122"><a class="reference internal" href="asyncio-sync.html#semaphores">18.5.7.2.信号量</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-120"><a class="reference internal" href="asyncio-sync.html#semaphore">18.5.7.2.1.信号量</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-121"><a class="reference internal" href="asyncio-sync.html#boundedsemaphore"> 18.5.7.2.2. BoundedSemaphore T0></a></span></li></ul></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-128"><a class="reference internal" href="asyncio-queue.html">18.5.8.队列</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-124"><a class="reference internal" href="asyncio-queue.html#queue">18.5.8.1.队列</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-125"><a class="reference internal" href="asyncio-queue.html#priorityqueue"> 18.5.8.2. 的PriorityQueue T0></a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-127"><a class="reference internal" href="asyncio-queue.html#lifoqueue"> 18.5.8.3. LifoQueue T0></a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-126"><a class="reference internal" href="asyncio-queue.html#exceptions">18.5.8.3.1.例外</a></span></li></ul></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-139"><a class="reference internal" href="asyncio-dev.html">18.5.9.使用asyncio开发</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-129"><a class="reference internal" href="asyncio-dev.html#debug-mode-of-asyncio">18.5.9.1.调试模式asyncio</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-130"><a class="reference internal" href="asyncio-dev.html#cancellation">18.5.9.2.取消</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-131"><a class="reference internal" href="asyncio-dev.html#concurrency-and-multithreading">18.5.9.3.并发和多线程</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-132"><a class="reference internal" href="asyncio-dev.html#handle-blocking-functions-correctly">18.5.9.4.正确处理阻塞函数</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-133"><a class="reference internal" href="asyncio-dev.html#logging">18.5.9.5.记录</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-134"><a class="reference internal" href="asyncio-dev.html#detect-coroutine-objects-never-scheduled">18.5.9.6.检测协程对象从未安排</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-135"><a class="reference internal" href="asyncio-dev.html#detect-exceptions-never-consumed">18.5.9.7.检测未使用的异常</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-136"><a class="reference internal" href="asyncio-dev.html#chain-coroutines-correctly">18.5.9.8.链协程</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-137"><a class="reference internal" href="asyncio-dev.html#pending-task-destroyed">18.5.9.9.待处理任务已销毁</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-138"><a class="reference internal" href="asyncio-dev.html#close-transports-and-event-loops">18.5.9.10.关闭传输和事件循环</a></span></li></ul></li></ul></div><div class="admonition seealso"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-140">也可以看看</span></p><p class="last"><span class="yiyi-st" id="yiyi-141"><a class="reference internal" href="#module-asyncio" title="asyncio: Asynchronous I/O, event loop, coroutines and tasks."><code class="xref py py-mod docutils literal"><span class="pre">asyncio</span></code></a>模块是在<span class="target" id="index-1"></span> <a class="pep reference external" href="https://www.python.org/dev/peps/pep-3156"><strong>PEP 3156</strong></a>中设计的。</span><span class="yiyi-st" id="yiyi-142">有关运输和协议的动机性引物,请参见<span class="target" id="index-2"></span> <a class="pep reference external" href="https://www.python.org/dev/peps/pep-3153"><strong>PEP 3153</strong></a>。</span></p></div></div></div> |