2019-04-08 23:22:26 +08:00

1 line
32 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="body" role="main"><div class="section" id="interprocess-communication-and-networking"><h1><span class="yiyi-st" id="yiyi-9">18. </span><span class="yiyi-st" id="yiyi-10">进程间通信和联网 </span></h1><p><span class="yiyi-st" id="yiyi-11">在这一章中描述的模块提供不同的进程进行通信的机制。</span></p><p><span class="yiyi-st" id="yiyi-12">某些模块只工作在同一台机器上的两个进程,例如</span><span class="yiyi-st" id="yiyi-13"><a class="reference internal" href="signal.html#module-signal" title="signal: Set handlers for asynchronous events."><code class="xref py py-mod docutils literal"><span class="pre">signal</span></code></a><a class="reference internal" href="mmap.html#module-mmap" title="mmap: Interface to memory-mapped files for Unix and Windows."><code class="xref py py-mod docutils literal"><span class="pre">mmap</span></code></a>.</span><span class="yiyi-st" id="yiyi-14">其他模块支持网络协议,两个或多个进程可用其进行跨机器通信。</span></p><p><span class="yiyi-st" id="yiyi-15">在这一章中描述的模块的列表是︰</span></p><div class="toctree-wrapper compound"><ul><li class="toctree-l1"><span class="yiyi-st" id="yiyi-28"><a class="reference internal" href="socket.html">18.1.<code class="docutils literal"><span class="pre">套接字</span></code> — 低级网络接口</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-16"><a class="reference internal" href="socket.html#socket-families">18.1.1. Socket系列</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-22"><a class="reference internal" href="socket.html#module-contents">18.1.2.模块内容</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-17"><a class="reference internal" href="socket.html#exceptions">18.1.2.1.例外</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-18"><a class="reference internal" href="socket.html#constants">18.1.2.2.常数</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-21"><a class="reference internal" href="socket.html#functions">18.1.2.3.函数</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-19"><a class="reference internal" href="socket.html#creating-sockets">18.1.2.3.1.创建套接字</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-20"><a class="reference internal" href="socket.html#other-functions">18.1.2.3.2.其他功能</a></span></li></ul></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-23"><a class="reference internal" href="socket.html#socket-objects">18.1.3.套接字对象</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-26"><a class="reference internal" href="socket.html#notes-on-socket-timeouts">18.1.4.套接字超时的注意事项</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-24"><a class="reference internal" href="socket.html#timeouts-and-the-connect-method">18.1.4.1.超时和<code class="docutils literal"><span class="pre">connect</span></code>方法</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-25"><a class="reference internal" href="socket.html#timeouts-and-the-accept-method">18.1.4.2.超时和<code class="docutils literal"><span class="pre">accept</span></code>方法</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-27"><a class="reference internal" href="socket.html#example">18.1.5.示例</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-55"><a class="reference internal" href="ssl.html">18.2. <code class="docutils literal"><span class="pre">ssl</span></code> - 套接字对象的TLS / SSL包装器</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-34"><a class="reference internal" href="ssl.html#functions-constants-and-exceptions">18.2.1.函数,常量和异常</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-29"><a class="reference internal" href="ssl.html#socket-creation">18.2.1.1.套接字创建</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-30"><a class="reference internal" href="ssl.html#context-creation">18.2.1.2.上下文创建</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-31"><a class="reference internal" href="ssl.html#random-generation">18.2.1.3.随机生成</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-32"><a class="reference internal" href="ssl.html#certificate-handling">18.2.1.4.证书处理</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-33"><a class="reference internal" href="ssl.html#constants">18.2.1.5.常数</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-35"><a class="reference internal" href="ssl.html#ssl-sockets">18.2.2. SSL套接字</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-36"><a class="reference internal" href="ssl.html#ssl-contexts">18.2.3. SSL上下文</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-41"><a class="reference internal" href="ssl.html#certificates">18.2.4.证书</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-37"><a class="reference internal" href="ssl.html#certificate-chains">18.2.4.1.证书链</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-38"><a class="reference internal" href="ssl.html#ca-certificates">18.2.4.2. CA证书</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-39"><a class="reference internal" href="ssl.html#combined-key-and-certificate">18.2.4.3.组合键和证书</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-40"><a class="reference internal" href="ssl.html#self-signed-certificates">18.2.4.4.自签名证书</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-45"><a class="reference internal" href="ssl.html#examples">18.2.5.示例</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-42"><a class="reference internal" href="ssl.html#testing-for-ssl-support">18.2.5.1.测试SSL支持</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-43"><a class="reference internal" href="ssl.html#client-side-operation">18.2.5.2.客户端操作</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-44"><a class="reference internal" href="ssl.html#server-side-operation">18.2.5.3.服务器端操作</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-46"><a class="reference internal" href="ssl.html#notes-on-non-blocking-sockets">18.2.6.非阻塞套接字注意事项</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-47"><a class="reference internal" href="ssl.html#memory-bio-support">18.2.7.内存BIO支持</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-54"><a class="reference internal" href="ssl.html#security-considerations">18.2.8.安全注意事项</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-48"><a class="reference internal" href="ssl.html#best-defaults">18.2.8.1.最佳默认值</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-52"><a class="reference internal" href="ssl.html#manual-settings">18.2.8.2.手动设置</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-49"><a class="reference internal" href="ssl.html#verifying-certificates">18.2.8.2.1.验证证书</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-50"><a class="reference internal" href="ssl.html#protocol-versions">18.2.8.2.2.协议版本</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-51"><a class="reference internal" href="ssl.html#cipher-selection">18.2.8.2.3.密码选择</a></span></li></ul></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-53"><a class="reference internal" href="ssl.html#multi-processing">18.2.8.3.多处理</a></span></li></ul></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-61"><a class="reference internal" href="select.html">18.3. <code class="docutils literal"><span class="pre">select</span></code> - 等待I / O完成</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-56"><a class="reference internal" href="select.html#dev-poll-polling-objects">18.3.1. <code class="docutils literal"><span class="pre">/dev/poll</span></code>轮询对象</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-57"><a class="reference internal" href="select.html#edge-and-level-trigger-polling-epoll-objects">18.3.2.边缘和级别触发器轮询epoll对象</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-58"><a class="reference internal" href="select.html#polling-objects">18.3.3.轮询对象</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-59"><a class="reference internal" href="select.html#kqueue-objects">18.3.4. Kqueue Objects</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-60"><a class="reference internal" href="select.html#kevent-objects">18.3.5. Kevent对象</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-65"><a class="reference internal" href="selectors.html">18.4. <code class="docutils literal"><span class="pre">selectors</span></code> - 高级I / O复用</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-62"><a class="reference internal" href="selectors.html#introduction">18.4.1.简介</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-63"><a class="reference internal" href="selectors.html#classes">18.4.2.类</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-64"><a class="reference internal" href="selectors.html#examples">18.4.3.示例</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-177"><a class="reference internal" href="asyncio.html">18.5. <code class="docutils literal"><span class="pre">asyncio</span></code> - 异步I / O事件循环协程和任务</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-88"><a class="reference internal" href="asyncio-eventloop.html">18.5.1.基本事件循环</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-66"><a class="reference internal" href="asyncio-eventloop.html#run-an-event-loop">18.5.1.1.运行事件循环</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-67"><a class="reference internal" href="asyncio-eventloop.html#calls">18.5.1.2.通话</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-68"><a class="reference internal" href="asyncio-eventloop.html#delayed-calls">18.5.1.3.延迟呼叫</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-69"><a class="reference internal" href="asyncio-eventloop.html#futures">18.5.1.4.期货</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-70"><a class="reference internal" href="asyncio-eventloop.html#tasks">18.5.1.5.任务</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-71"><a class="reference internal" href="asyncio-eventloop.html#creating-connections">18.5.1.6.创建连接</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-72"><a class="reference internal" href="asyncio-eventloop.html#creating-listening-connections">18.5.1.7.创建侦听连接</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-73"><a class="reference internal" href="asyncio-eventloop.html#watch-file-descriptors">18.5.1.8.观看文件描述器</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-74"><a class="reference internal" href="asyncio-eventloop.html#low-level-socket-operations">18.5.1.9.低级套接字操作</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-75"><a class="reference internal" href="asyncio-eventloop.html#resolve-host-name">18.5.1.10.解析主机名</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-76"><a class="reference internal" href="asyncio-eventloop.html#connect-pipes">18.5.1.11.连接管道</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-77"><a class="reference internal" href="asyncio-eventloop.html#unix-signals">18.5.1.12. UNIX信号 0&gt;</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-78"><a class="reference internal" href="asyncio-eventloop.html#executor">18.5.1.13.执行者</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-79"><a class="reference internal" href="asyncio-eventloop.html#error-handling-api">18.5.1.14.错误处理API</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-80"><a class="reference internal" href="asyncio-eventloop.html#debug-mode">18.5.1.15.调试模式</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-81"><a class="reference internal" href="asyncio-eventloop.html#server">18.5.1.16.服务器</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-82"><a class="reference internal" href="asyncio-eventloop.html#handle">18.5.1.17.处理</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-87"><a class="reference internal" href="asyncio-eventloop.html#event-loop-examples">18.5.1.18.事件循环示例</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-83"><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-l4"><span class="yiyi-st" id="yiyi-84"><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-l4"><span class="yiyi-st" id="yiyi-85"><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-l4"><span class="yiyi-st" id="yiyi-86"><a class="reference internal" href="asyncio-eventloop.html#set-signal-handlers-for-sigint-and-sigterm">18.5.1.18.4.设置SIGINT和SIGTERM</a>的信号处理程序</span></li></ul></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-97"><a class="reference internal" href="asyncio-eventloops.html">18.5.2.事件循环</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-89"><a class="reference internal" href="asyncio-eventloops.html#event-loop-functions">18.5.2.1.事件循环函数</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-90"><a class="reference internal" href="asyncio-eventloops.html#available-event-loops">18.5.2.2.可用事件循环</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-93"><a class="reference internal" href="asyncio-eventloops.html#platform-support">18.5.2.3.平台支持</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-91"><a class="reference internal" href="asyncio-eventloops.html#windows">18.5.2.3.1. Windows</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-92"><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-l3"><span class="yiyi-st" id="yiyi-94"><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-l3"><span class="yiyi-st" id="yiyi-95"><a class="reference internal" href="asyncio-eventloops.html#event-loop-policy-interface">18.5.2.5.事件循环策略接口</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-96"><a class="reference internal" href="asyncio-eventloops.html#access-to-the-global-loop-policy">18.5.2.6.访问全局循环策略</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-110"><a class="reference internal" href="asyncio-task.html">18.5.3.任务和协程</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-101"><a class="reference internal" href="asyncio-task.html#coroutines">18.5.3.1.协程</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-98"><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-l4"><span class="yiyi-st" id="yiyi-99"><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-l4"><span class="yiyi-st" id="yiyi-100"><a class="reference internal" href="asyncio-task.html#example-chain-coroutines">18.5.3.1.3.示例:链协程</a></span></li></ul></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-102"><a class="reference internal" href="asyncio-task.html#invalidstateerror">18.5.3.2. InvalidStateError 0&gt;&gt;</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-103"><a class="reference internal" href="asyncio-task.html#timeouterror">18.5.3.3. TimeoutError</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-106"><a class="reference internal" href="asyncio-task.html#future">18.5.3.4.未来</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-104"><a class="reference internal" href="asyncio-task.html#example-future-with-run-until-complete">18.5.3.4.1.示例未来与run_until_complete()</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-105"><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-l3"><span class="yiyi-st" id="yiyi-108"><a class="reference internal" href="asyncio-task.html#task">18.5.3.5.任务</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-107"><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-l3"><span class="yiyi-st" id="yiyi-109"><a class="reference internal" href="asyncio-task.html#task-functions">18.5.3.6.任务函数</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-130"><a class="reference internal" href="asyncio-protocol.html">18.5.4.传输和协议基于回调的API</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-116"><a class="reference internal" href="asyncio-protocol.html#transports">18.5.4.1.传输</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-111"><a class="reference internal" href="asyncio-protocol.html#basetransport">18.5.4.1.1. BaseTransport</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-112"><a class="reference internal" href="asyncio-protocol.html#readtransport">18.5.4.1.2. ReadTransport</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-113"><a class="reference internal" href="asyncio-protocol.html#writetransport">18.5.4.1.3. WriteTransport</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-114"><a class="reference internal" href="asyncio-protocol.html#datagramtransport">18.5.4.1.4. DatagramTransport</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-115"><a class="reference internal" href="asyncio-protocol.html#basesubprocesstransport">18.5.4.1.5. BaseSubprocessTransport</a></span></li></ul></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-123"><a class="reference internal" href="asyncio-protocol.html#protocols">18.5.4.2.协议</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-117"><a class="reference internal" href="asyncio-protocol.html#protocol-classes">18.5.4.2.1.协议类</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-118"><a class="reference internal" href="asyncio-protocol.html#connection-callbacks">18.5.4.2.2.连接回调</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-119"><a class="reference internal" href="asyncio-protocol.html#streaming-protocols">18.5.4.2.3.流协议</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-120"><a class="reference internal" href="asyncio-protocol.html#datagram-protocols">18.5.4.2.4.数据报协议</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-121"><a class="reference internal" href="asyncio-protocol.html#flow-control-callbacks">18.5.4.2.5.流控制回调</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-122"><a class="reference internal" href="asyncio-protocol.html#coroutines-and-protocols">18.5.4.2.6.协程和协议</a></span></li></ul></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-129"><a class="reference internal" href="asyncio-protocol.html#protocol-examples">18.5.4.3.协议示例</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-124"><a class="reference internal" href="asyncio-protocol.html#tcp-echo-client-protocol">18.5.4.3.1. TCP回显客户端协议</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-125"><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-l4"><span class="yiyi-st" id="yiyi-126"><a class="reference internal" href="asyncio-protocol.html#udp-echo-client-protocol">18.5.4.3.3. UDP echo client protocol</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-127"><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-l4"><span class="yiyi-st" id="yiyi-128"><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-l2"><span class="yiyi-st" id="yiyi-142"><a class="reference internal" href="asyncio-stream.html">18.5.5. Streams协程式API</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-131"><a class="reference internal" href="asyncio-stream.html#stream-functions">18.5.5.1.流函数</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-132"><a class="reference internal" href="asyncio-stream.html#streamreader">18.5.5.2. StreamReader</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-133"><a class="reference internal" href="asyncio-stream.html#streamwriter">18.5.5.3. StreamWriter</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-134"><a class="reference internal" href="asyncio-stream.html#streamreaderprotocol">18.5.5.4. StreamReaderProtocol</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-135"><a class="reference internal" href="asyncio-stream.html#incompletereaderror">18.5.5.5. IncompleteReadError</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-136"><a class="reference internal" href="asyncio-stream.html#limitoverrunerror">18.5.5.6. LimitOverrunError</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-141"><a class="reference internal" href="asyncio-stream.html#stream-examples">18.5.5.7.流示例</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-137"><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-l4"><span class="yiyi-st" id="yiyi-138"><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-l4"><span class="yiyi-st" id="yiyi-139"><a class="reference internal" href="asyncio-stream.html#get-http-headers">18.5.5.7.3.获取HTTP标头</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-140"><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-l2"><span class="yiyi-st" id="yiyi-152"><a class="reference internal" href="asyncio-subprocess.html">18.5.6.子过程</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-143"><a class="reference internal" href="asyncio-subprocess.html#windows-event-loop">18.5.6.1. Windows事件循环</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-144"><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-l3"><span class="yiyi-st" id="yiyi-145"><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-l3"><span class="yiyi-st" id="yiyi-146"><a class="reference internal" href="asyncio-subprocess.html#constants">18.5.6.4.常数</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-147"><a class="reference internal" href="asyncio-subprocess.html#process">18.5.6.5.过程</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-148"><a class="reference internal" href="asyncio-subprocess.html#subprocess-and-threads">18.5.6.6.子进程和线程</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-151"><a class="reference internal" href="asyncio-subprocess.html#subprocess-examples">18.5.6.7.子过程示例</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-149"><a class="reference internal" href="asyncio-subprocess.html#subprocess-using-transport-and-protocol">18.5.6.7.1.使用传输和协议的子流程</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-150"><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-l2"><span class="yiyi-st" id="yiyi-160"><a class="reference internal" href="asyncio-sync.html">18.5.7.同步原语</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-156"><a class="reference internal" href="asyncio-sync.html#locks">18.5.7.1.锁定</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-153"><a class="reference internal" href="asyncio-sync.html#lock">18.5.7.1.1.锁定</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-154"><a class="reference internal" href="asyncio-sync.html#event">18.5.7.1.2.事件</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-155"><a class="reference internal" href="asyncio-sync.html#condition">18.5.7.1.3.条件</a></span></li></ul></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-159"><a class="reference internal" href="asyncio-sync.html#semaphores">18.5.7.2.信号量</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-157"><a class="reference internal" href="asyncio-sync.html#semaphore">18.5.7.2.1.信号量</a></span></li><li class="toctree-l4"><span class="yiyi-st" id="yiyi-158"><a class="reference internal" href="asyncio-sync.html#boundedsemaphore">18.5.7.2.2. BoundedSemaphore</a></span></li></ul></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-165"><a class="reference internal" href="asyncio-queue.html">18.5.8.队列</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-161"><a class="reference internal" href="asyncio-queue.html#queue">18.5.8.1.队列</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-162"><a class="reference internal" href="asyncio-queue.html#priorityqueue">18.5.8.2. PriorityQueue</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-164"><a class="reference internal" href="asyncio-queue.html#lifoqueue">18.5.8.3. LifoQueue</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-163"><a class="reference internal" href="asyncio-queue.html#exceptions">18.5.8.3.1.例外</a></span></li></ul></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-176"><a class="reference internal" href="asyncio-dev.html">18.5.9.使用asyncio开发</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-166"><a class="reference internal" href="asyncio-dev.html#debug-mode-of-asyncio">18.5.9.1.调试模式asyncio</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-167"><a class="reference internal" href="asyncio-dev.html#cancellation">18.5.9.2.取消</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-168"><a class="reference internal" href="asyncio-dev.html#concurrency-and-multithreading">18.5.9.3.并发和多线程</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-169"><a class="reference internal" href="asyncio-dev.html#handle-blocking-functions-correctly">18.5.9.4.正确处理阻塞函数</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-170"><a class="reference internal" href="asyncio-dev.html#logging">18.5.9.5.记录</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-171"><a class="reference internal" href="asyncio-dev.html#detect-coroutine-objects-never-scheduled">18.5.9.6.检测协程对象从未安排</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-172"><a class="reference internal" href="asyncio-dev.html#detect-exceptions-never-consumed">18.5.9.7.检测未使用的异常</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-173"><a class="reference internal" href="asyncio-dev.html#chain-coroutines-correctly">18.5.9.8.链协程</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-174"><a class="reference internal" href="asyncio-dev.html#pending-task-destroyed">18.5.9.9.待处理任务已销毁</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-175"><a class="reference internal" href="asyncio-dev.html#close-transports-and-event-loops">18.5.9.10.关闭传输和事件循环</a></span></li></ul></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-180"><a class="reference internal" href="asyncore.html">18.6. <code class="docutils literal"><span class="pre">asyncore</span></code> - 异步套接字处理程序</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-178"><a class="reference internal" href="asyncore.html#asyncore-example-basic-http-client">18.6.1. asyncore示例基本HTTP客户端</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-179"><a class="reference internal" href="asyncore.html#asyncore-example-basic-echo-server">18.6.2. asyncore示例基本echo服务器</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-182"><a class="reference internal" href="asynchat.html">18.7. <code class="docutils literal"><span class="pre">asynchat</span></code> - 异步套接字命令/响应处理程序</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-181"><a class="reference internal" href="asynchat.html#asynchat-example">18.7.1. asynchat示例</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-188"><a class="reference internal" href="signal.html">18.8. <code class="docutils literal"><span class="pre">signal</span></code> - 设置异步事件处理程序</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-185"><a class="reference internal" href="signal.html#general-rules">18.8.1.一般规则</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-183"><a class="reference internal" href="signal.html#execution-of-python-signal-handlers">18.8.1.1.执行Python信号处理程序</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-184"><a class="reference internal" href="signal.html#signals-and-threads">18.8.1.2.信号和线程</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-186"><a class="reference internal" href="signal.html#module-contents">18.8.2.模块内容</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-187"><a class="reference internal" href="signal.html#example">18.8.3.示例</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-189"><a class="reference internal" href="mmap.html">18.9. <code class="docutils literal"><span class="pre">mmap</span></code> - 内存映射文件支持</a></span></li></ul></div></div></div>