Files
hustoj/web/python-docs/library/concurrency.html
2025-03-09 17:10:56 +08:00

390 lines
24 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.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>并发执行 &#8212; Python 3.8.20 文档</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script src="../_static/translations.js"></script>
<script src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="在 Python 3.8.20 文档 中搜索"
href="../_static/opensearch.xml"/>
<link rel="author" title="关于这些文档" href="../about.html" />
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="copyright" title="版权所有" href="../copyright.html" />
<link rel="next" title="threading --- 基于线程的并行" href="threading.html" />
<link rel="prev" title="ctypes --- Python 的外部函数库" href="ctypes.html" />
<link rel="canonical" href="https://docs.python.org/3/library/concurrency.html" />
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
<link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/menu.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<nav class="nav-content" role="navigation">
<a href="https://www.python.org/" class="nav-logo">
<img src="../_static/py.svg" alt="Logo"/>
</a>
<div class="version_switcher_placeholder"></div>
<form role="search" class="search" action="../search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero"
d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
</svg>
<input type="text" name="q" aria-label="快速搜索"/>
<input type="submit" value="转向"/>
</form>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<h4>上一个主题</h4>
<p class="topless"><a href="ctypes.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ctypes</span></code> --- Python 的外部函数库</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="threading.html"
title="下一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">threading</span></code> --- 基于线程的并行</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/concurrency.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
这个文档所针对的是一个已不再受支持的 Python 旧版本。
你应当升级版本,并阅读
<a href="/3/library/concurrency.html"> Python 当前稳定版本的文档</a>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
accesskey="I">索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="threading.html" title="threading --- 基于线程的并行"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="ctypes.html" title="ctypes --- Python 的外部函数库"
accesskey="P">上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Python 标准库</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="concurrent-execution">
<span id="concurrency"></span><h1>并发执行<a class="headerlink" href="#concurrent-execution" title="永久链接至标题"></a></h1>
<p>本章中描述的模块支持并发执行代码。 适当的工具选择取决于要执行的任务CPU密集型或IO密集型和偏好的开发风格事件驱动的协作式多任务或抢占式多任务处理。 这是一个概述:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="threading.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">threading</span></code> --- 基于线程的并行</a><ul>
<li class="toctree-l2"><a class="reference internal" href="threading.html#thread-local-data">线程本地数据</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#thread-objects">线程对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#lock-objects">锁对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#rlock-objects">递归锁对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#condition-objects">条件对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#semaphore-objects">信号量对象</a><ul>
<li class="toctree-l3"><a class="reference internal" href="threading.html#semaphore-example"><code class="xref py py-class docutils literal notranslate"><span class="pre">Semaphore</span></code> 例子</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#event-objects">事件对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#timer-objects">定时器对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#barrier-objects">栅栏对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#using-locks-conditions-and-semaphores-in-the-with-statement"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code> 语句中使用锁、条件和信号量</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="multiprocessing.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">multiprocessing</span></code> --- 基于进程的并行</a><ul>
<li class="toctree-l2"><a class="reference internal" href="multiprocessing.html#introduction">概述</a><ul>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#the-process-class"><code class="xref py py-class docutils literal notranslate"><span class="pre">Process</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#contexts-and-start-methods">上下文和启动方法</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#exchanging-objects-between-processes">在进程之间交换对象</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#synchronization-between-processes">进程间同步</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#sharing-state-between-processes">进程间共享状态</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#using-a-pool-of-workers">使用工作进程</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="multiprocessing.html#reference">参考</a><ul>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#process-and-exceptions"><code class="xref py py-class docutils literal notranslate"><span class="pre">Process</span></code> 和异常</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#pipes-and-queues">管道和队列</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#miscellaneous">杂项</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#connection-objects">连接对象Connection</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#synchronization-primitives">同步原语</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#shared-ctypes-objects">共享 <code class="xref py py-mod docutils literal notranslate"><span class="pre">ctypes</span></code> 对象</a><ul>
<li class="toctree-l4"><a class="reference internal" href="multiprocessing.html#module-multiprocessing.sharedctypes"><code class="xref py py-mod docutils literal notranslate"><span class="pre">multiprocessing.sharedctypes</span></code> 模块</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#managers">管理器</a><ul>
<li class="toctree-l4"><a class="reference internal" href="multiprocessing.html#customized-managers">自定义管理器</a></li>
<li class="toctree-l4"><a class="reference internal" href="multiprocessing.html#using-a-remote-manager">使用远程管理器</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#proxy-objects">代理对象</a><ul>
<li class="toctree-l4"><a class="reference internal" href="multiprocessing.html#cleanup">清理</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#module-multiprocessing.pool">进程池</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#module-multiprocessing.connection">监听器及客户端</a><ul>
<li class="toctree-l4"><a class="reference internal" href="multiprocessing.html#address-formats">地址格式</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#authentication-keys">认证密码</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#logging">日志记录</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#module-multiprocessing.dummy"><code class="xref py py-mod docutils literal notranslate"><span class="pre">multiprocessing.dummy</span></code> 模块</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="multiprocessing.html#programming-guidelines">编程指导</a><ul>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#all-start-methods">所有start方法</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#the-spawn-and-forkserver-start-methods"><em>spawn</em><em>forkserver</em> 启动方式</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="multiprocessing.html#examples">例子</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="multiprocessing.shared_memory.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">multiprocessing.shared_memory</span></code> --- 可从进程直接访问的共享内存</a></li>
<li class="toctree-l1"><a class="reference internal" href="concurrent.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">concurrent</span></code></a></li>
<li class="toctree-l1"><a class="reference internal" href="concurrent.futures.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">concurrent.futures</span></code> --- 启动并行任务</a><ul>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#executor-objects">Executor 对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#threadpoolexecutor">ThreadPoolExecutor</a><ul>
<li class="toctree-l3"><a class="reference internal" href="concurrent.futures.html#threadpoolexecutor-example">ThreadPoolExecutor 例子</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#processpoolexecutor">ProcessPoolExecutor</a><ul>
<li class="toctree-l3"><a class="reference internal" href="concurrent.futures.html#processpoolexecutor-example">ProcessPoolExecutor 例子</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#future-objects">Future 对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#module-functions">模块函数</a></li>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#exception-classes">Exception 类</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="subprocess.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">subprocess</span></code> --- 子进程管理</a><ul>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#using-the-subprocess-module">使用 <code class="xref py py-mod docutils literal notranslate"><span class="pre">subprocess</span></code> 模块</a><ul>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#frequently-used-arguments">常用参数</a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#popen-constructor">Popen 构造函数</a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#exceptions">异常</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#security-considerations">安全考量</a></li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#popen-objects">Popen 对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#windows-popen-helpers">Windows Popen 助手</a><ul>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#windows-constants">Windows 常数</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#older-high-level-api">较旧的高阶 API</a></li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#replacing-older-functions-with-the-subprocess-module">使用 <code class="xref py py-mod docutils literal notranslate"><span class="pre">subprocess</span></code> 模块替换旧函数</a><ul>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-bin-sh-shell-command-substitution">替代 <strong class="program">/bin/sh</strong> shell 命令替换</a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-shell-pipeline">替代 shell 管道</a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-os-system">替代 <code class="xref py py-func docutils literal notranslate"><span class="pre">os.system()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-the-os-spawn-family">替代 <code class="xref py py-func docutils literal notranslate"><span class="pre">os.spawn</span></code> 函数族</a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-os-popen-os-popen2-os-popen3">替代 <code class="xref py py-func docutils literal notranslate"><span class="pre">os.popen()</span></code>, <code class="xref py py-func docutils literal notranslate"><span class="pre">os.popen2()</span></code>, <code class="xref py py-func docutils literal notranslate"><span class="pre">os.popen3()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-functions-from-the-popen2-module">来自 <code class="xref py py-mod docutils literal notranslate"><span class="pre">popen2</span></code> 模块的替代函数</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#legacy-shell-invocation-functions">旧式的 Shell 发起函数</a></li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#notes">备注</a><ul>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#converting-an-argument-sequence-to-a-string-on-windows">在 Windows 上将参数列表转换为一个字符串</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="sched.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sched</span></code> --- 事件调度器</a><ul>
<li class="toctree-l2"><a class="reference internal" href="sched.html#scheduler-objects">调度器对象</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="queue.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">queue</span></code> --- 一个同步的队列类</a><ul>
<li class="toctree-l2"><a class="reference internal" href="queue.html#queue-objects">Queue对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="queue.html#simplequeue-objects">SimpleQueue 对象</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="contextvars.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">contextvars</span></code> --- 上下文变量</a><ul>
<li class="toctree-l2"><a class="reference internal" href="contextvars.html#context-variables">上下文变量</a></li>
<li class="toctree-l2"><a class="reference internal" href="contextvars.html#manual-context-management">手动上下文管理</a></li>
<li class="toctree-l2"><a class="reference internal" href="contextvars.html#asyncio-support">asyncio 支持</a></li>
</ul>
</li>
</ul>
</div>
<p>以下是上述某些服务的支持模块:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="_thread.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">_thread</span></code> --- 底层多线程 API</a></li>
<li class="toctree-l1"><a class="reference internal" href="_dummy_thread.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">_dummy_thread</span></code> --- <code class="xref py py-mod docutils literal notranslate"><span class="pre">_thread</span></code> 的替代模块</a></li>
<li class="toctree-l1"><a class="reference internal" href="dummy_threading.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dummy_threading</span></code> --- 可直接替代 <code class="xref py py-mod docutils literal notranslate"><span class="pre">threading</span></code> 模块。</a></li>
</ul>
</div>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h4>上一个主题</h4>
<p class="topless"><a href="ctypes.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ctypes</span></code> --- Python 的外部函数库</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="threading.html"
title="下一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">threading</span></code> --- 基于线程的并行</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/concurrency.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
>索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="threading.html" title="threading --- 基于线程的并行"
>下一页</a> |</li>
<li class="right" >
<a href="ctypes.html" title="ctypes --- Python 的外部函数库"
>上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">版权所有</a> 2001-2024, Python Software Foundation.
<br />
This page is licensed under the Python Software Foundation License Version 2.
<br />
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br />
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
<br />
最后更新于 12月 09, 2024.
<a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
<br />
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 2.4.4.
</div>
</body>
</html>