CINXE.COM
gevent.pool – Managing greenlets in a group - gevent 24.11.2.dev0 documentation
<!doctype html> <html class="no-js" lang="en" data-content_root="../"> <head><meta charset="utf-8"/> <meta name="viewport" content="width=device-width,initial-scale=1"/> <meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="gevent.pywsgi – A pure-Python, gevent-friendly WSGI server" href="gevent.pywsgi.html" /><link rel="prev" title="gevent.os – Low-level operating system functions from os" href="gevent.os.html" /> <!-- Generated with Sphinx 8.1.3 and Furo 2024.08.06 --> <title>gevent.pool – Managing greenlets in a group - gevent 24.11.2.dev0 documentation</title> <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a3258c64" /> <link rel="stylesheet" type="text/css" href="../_static/styles/furo.css?v=354aac6f" /> <link rel="stylesheet" type="text/css" href="../_static/styles/furo-extensions.css?v=302659d7" /> <link rel="stylesheet" type="text/css" href="../_static/custom.css?v=e405f49d" /> <style> body { --color-code-background: #eeeedd; --color-code-foreground: black; --color-brand-primary: #7c9a5e; --color-brand-content: #7c9a5e; --color-foreground-border: #b7d897; --font-stack: "SF Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"; --font-stack--monospace: "JetBrainsMono", "JetBrains Mono", "JetBrains Mono Regular", "JetBrainsMono-Regular", ui-monospace, profont, monospace; } @media not print { body[data-theme="dark"] { --color-code-background: #202020; --color-code-foreground: #d0d0d0; } @media (prefers-color-scheme: dark) { body:not([data-theme="light"]) { --color-code-background: #202020; --color-code-foreground: #d0d0d0; } } } </style><script async type="text/javascript" src="/_/static/javascript/readthedocs-addons.js"></script><meta name="readthedocs-project-slug" content="python-gevent" /><meta name="readthedocs-version-slug" content="latest" /><meta name="readthedocs-resolver-filename" content="/api/gevent.pool.html" /><meta name="readthedocs-http-status" content="200" /></head> <body> <script> document.body.dataset.theme = localStorage.getItem("theme") || "auto"; </script> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-toc" viewBox="0 0 24 24"> <title>Contents</title> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024"> <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line> <line x1="3" y1="6" x2="21" y2="6"></line> <line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <symbol id="svg-sun" viewBox="0 0 24 24"> <title>Light mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun"> <circle cx="12" cy="12" r="5"></circle> <line x1="12" y1="1" x2="12" y2="3"></line> <line x1="12" y1="21" x2="12" y2="23"></line> <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> <line x1="1" y1="12" x2="3" y2="12"></line> <line x1="21" y1="12" x2="23" y2="12"></line> <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> </svg> </symbol> <symbol id="svg-moon" viewBox="0 0 24 24"> <title>Dark mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon"> <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /> </svg> </symbol> <symbol id="svg-sun-with-moon" viewBox="0 0 24 24"> <title>Auto light/dark, in light mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-custom-derived-from-feather-sun-and-tabler-moon"> <path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/> <line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/> <line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/> <line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/> <line x1="19" y1="14.05" x2="20.414" y2="15.464"/> <line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/> <line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/> <line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/> <line x1="19" y1="5.05" x2="20.414" y2="3.636"/> <circle cx="14.5" cy="9.55" r="3.6"/> </svg> </symbol> <symbol id="svg-moon-with-sun" viewBox="0 0 24 24"> <title>Auto light/dark, in dark mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-custom-derived-from-feather-sun-and-tabler-moon"> <path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/> <line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/> <line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/> <line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/> <line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/> <line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/> <line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/> <line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/> <line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/> <circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/> </svg> </symbol> <symbol id="svg-pencil" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code"> <path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" /> <path d="M13.5 6.5l4 4" /> <path d="M20 21l2 -2l-2 -2" /> <path d="M17 17l-2 2l2 2" /> </svg> </symbol> <symbol id="svg-eye" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code"> <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" /> <path d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" /> <path d="M20 21l2 -2l-2 -2" /> <path d="M17 17l-2 2l2 2" /> </svg> </symbol> </svg> <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation"> <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc"> <label class="overlay sidebar-overlay" for="__navigation"> <div class="visually-hidden">Hide navigation sidebar</div> </label> <label class="overlay toc-overlay" for="__toc"> <div class="visually-hidden">Hide table of contents sidebar</div> </label> <a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a> <div class="page"> <header class="mobile-header"> <div class="header-left"> <label class="nav-overlay-icon" for="__navigation"> <div class="visually-hidden">Toggle site navigation sidebar</div> <i class="icon"><svg><use href="#svg-menu"></use></svg></i> </label> </div> <div class="header-center"> <a href="../contents.html"><div class="brand">gevent 24.11.2.dev0 documentation</div></a> </div> <div class="header-right"> <div class="theme-toggle-container theme-toggle-header"> <button class="theme-toggle"> <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg> <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg> <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> </button> </div> <label class="toc-overlay-icon toc-header-icon" for="__toc"> <div class="visually-hidden">Toggle table of contents sidebar</div> <i class="icon"><svg><use href="#svg-toc"></use></svg></i> </label> </div> </header> <aside class="sidebar-drawer"> <div class="sidebar-container"> <div class="sidebar-sticky"><a class="sidebar-brand" href="../contents.html"> <div class="sidebar-logo-container"> <img class="sidebar-logo" src="../_static/5564530.png" alt="Logo"/> </div> </a><form class="sidebar-search-container" method="get" action="../search.html" role="search"> <input class="sidebar-search" placeholder="Search" name="q" aria-label="Search"> <input type="hidden" name="check_keywords" value="yes"> <input type="hidden" name="area" value="default"> </form> <div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree"> <ul> <li class="toctree-l1"><a class="reference internal" href="../install.html">Installation and Requirements</a></li> <li class="toctree-l1 has-children"><a class="reference internal" href="../changelog.html">Changelog</a><input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><div class="visually-hidden">Toggle navigation of Changelog</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_5.html">Changes for 1.5</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_4.html">Changes for 1.4</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_3.html">Changes for 1.3</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_2.html">Changes for 1.2</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_1.html">Changes for 1.1</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_0.html">Changes for 1.0</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_pre.html">Changes before gevent 1.0</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../intro.html">Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="gevent.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent</span></code> – common functions</a></li> <li class="toctree-l1"><a class="reference internal" href="gevent.greenlet.html">Greenlet Objects</a></li> <li class="toctree-l1"><a class="reference internal" href="../servers.html">Implementing servers</a></li> <li class="toctree-l1 has-children"><a class="reference internal" href="../dns.html">Name Resolution (DNS)</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle navigation of Name Resolution (DNS)</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="gevent.resolver.thread.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.thread</span></code> – thread based hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.resolver.ares.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.ares</span></code> – c-ares based hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.resolver.dnspython.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.dnspython</span></code> – Pure Python hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.resolver.blocking.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.blocking</span></code> – Non-cooperative resolver</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../monitoring.html">Monitoring and Debugging gevent Applications</a></li> <li class="toctree-l1"><a class="reference internal" href="../loop_impls.html">Event Loop Implementations: libuv and libev</a></li> <li class="toctree-l1"><a class="reference internal" href="../configuration.html">Configuring gevent</a></li> </ul> <ul class="current"> <li class="toctree-l1 current has-children"><a class="reference internal" href="index.html">API reference</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><div class="visually-hidden">Toggle navigation of API reference</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current"> <li class="toctree-l2"><a class="reference internal" href="gevent.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent</span></code> – common functions</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.timeout.html">Cooperative Timeouts Using <code class="docutils literal notranslate"><span class="pre">gevent.Timeout</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.greenlet.html">Greenlet Objects</a></li> <li class="toctree-l2 has-children"><a class="reference internal" href="gevent.socket.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.socket</span></code> – Cooperative low-level networking interface</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><div class="visually-hidden">Toggle navigation of gevent.socket – Cooperative low-level networking interface</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="gevent._socket3.html">Python 3 interface</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="gevent.ssl.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.ssl</span></code> – Secure Sockets Layer (SSL/TLS) module</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.select.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.select</span></code> – Waiting for I/O completion</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.selectors.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.selectors</span></code> – High-level IO Multiplexing</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.event.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.event</span></code> – Notifications of multiple listeners</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.queue.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.queue</span></code> – Synchronized queues</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.local.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.local</span></code> – Greenlet-local objects</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.lock.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.lock</span></code> – Locking primitives</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.hub.html"><code class="docutils literal notranslate"><span class="pre">gevent.hub</span></code> - The Event Loop and the Hub</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.core.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.core</span></code> - (deprecated) event loop abstraction</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent</span></code> – common functions</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.backdoor.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.backdoor</span></code> – Interactive greenlet-based network console that can be used in any process</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.baseserver.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.baseserver</span></code> – Base class for implementing servers</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.builtins.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.builtins</span></code> – gevent friendly implementations of builtin functions</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.contextvars.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.contextvars</span></code> – Cooperative <code class="docutils literal notranslate"><span class="pre">contextvars</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.core.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.core</span></code> - (deprecated) event loop abstraction</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.event.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.event</span></code> – Notifications of multiple listeners</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.events.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.events</span></code> – Publish/subscribe event infrastructure</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.exceptions.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.exceptions</span></code> – Exceptions</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.fileobject.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.fileobject</span></code> – Wrappers to make file-like objects cooperative</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.hub.html"><code class="docutils literal notranslate"><span class="pre">gevent.hub</span></code> - The Event Loop and the Hub</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.local.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.local</span></code> – Greenlet-local objects</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.lock.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.lock</span></code> – Locking primitives</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.monkey.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.monkey</span></code> – Make the standard library cooperative</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.os.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.os</span></code> – Low-level operating system functions from <code class="xref py py-mod docutils literal notranslate"><span class="pre">os</span></code></a></li> <li class="toctree-l2 current current-page"><a class="current reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.pool</span></code> – Managing greenlets in a group</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.pywsgi.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.pywsgi</span></code> – A pure-Python, gevent-friendly WSGI server</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.queue.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.queue</span></code> – Synchronized queues</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.resolver.ares.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.ares</span></code> – c-ares based hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.resolver.blocking.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.blocking</span></code> – Non-cooperative resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.resolver.dnspython.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.dnspython</span></code> – Pure Python hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.resolver.thread.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.thread</span></code> – thread based hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.select.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.select</span></code> – Waiting for I/O completion</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.selectors.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.selectors</span></code> – High-level IO Multiplexing</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.server.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.server</span></code> – TCP/SSL server</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.signal.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.signal</span></code> – Cooperative implementation of special cases of <code class="xref py py-func docutils literal notranslate"><span class="pre">signal.signal()</span></code></a></li> <li class="toctree-l2 has-children"><a class="reference internal" href="gevent.socket.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.socket</span></code> – Cooperative low-level networking interface</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><div class="visually-hidden">Toggle navigation of gevent.socket – Cooperative low-level networking interface</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="gevent._socket3.html">Python 3 interface</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="gevent.ssl.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.ssl</span></code> – Secure Sockets Layer (SSL/TLS) module</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.subprocess.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.subprocess</span></code> – Cooperative <code class="docutils literal notranslate"><span class="pre">subprocess</span></code> module</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.thread.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.thread</span></code> – Implementation of the standard <code class="xref py py-mod docutils literal notranslate"><span class="pre">thread</span></code> module that spawns greenlets</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.threading.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.threading</span></code> – Implementation of the standard <code class="xref py py-mod docutils literal notranslate"><span class="pre">threading</span></code> using greenlets</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.threadpool.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.threadpool</span></code> - A pool of native threads</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.time.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.time</span></code> – Makes <em>sleep</em> gevent aware</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.util.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.util</span></code> – Low-level utilities</a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.ares.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.ares</span></code> – Backwards compatibility alias for <code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.cares</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="gevent.wsgi.html"><code class="docutils literal notranslate"><span class="pre">gevent.wsgi</span></code> – Historical note only; does not exist</a></li> <li class="toctree-l2 has-children"><a class="reference internal" href="../examples/index.html">Examples</a><input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div class="visually-hidden">Toggle navigation of Examples</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="../examples/concurrent_download.html">Example concurrent_download.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/dns_mass_resolve.html">Example dns_mass_resolve.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/echoserver.html">Example echoserver.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/geventsendfile.html">Example geventsendfile.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/portforwarder.html">Example portforwarder.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/processes.html">Example processes.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/psycopg2_pool.html">Example psycopg2_pool.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/threadpool.html">Example threadpool.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/udp_client.html">Example udp_client.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/udp_server.html">Example udp_server.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/unixsocket_client.html">Example unixsocket_client.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/unixsocket_server.html">Example unixsocket_server.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/webproxy.html">Example webproxy.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/webpy.html">Example webpy.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/wsgiserver.html">Example wsgiserver.py</a></li> <li class="toctree-l3"><a class="reference internal" href="../examples/wsgiserver_ssl.html">Example wsgiserver_ssl.py</a></li> </ul> </li> </ul> </li> </ul> <ul> <li class="toctree-l1 has-children"><a class="reference internal" href="../development/index.html">Development</a><input class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><div class="visually-hidden">Toggle navigation of Development</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="../development/getting_started.html">Getting Started</a></li> <li class="toctree-l2"><a class="reference internal" href="../development/installing_from_source.html">Installing From Source</a></li> <li class="toctree-l2"><a class="reference internal" href="../development/running_tests.html">Running Tests</a></li> <li class="toctree-l2"><a class="reference internal" href="../development/ci.html">Continuous integration</a></li> <li class="toctree-l2"><a class="reference internal" href="../development/release_process.html">Release Process</a></li> </ul> </li> </ul> <ul> <li class="toctree-l1"><a class="reference internal" href="../success.html">Success stories</a></li> <li class="toctree-l1"><a class="reference internal" href="../community.html">Community</a></li> <li class="toctree-l1 has-children"><a class="reference internal" href="../older_releases.html">Information About Older Releases</a><input class="toctree-checkbox" id="toctree-checkbox-8" name="toctree-checkbox-8" role="switch" type="checkbox"/><label for="toctree-checkbox-8"><div class="visually-hidden">Toggle navigation of Information About Older Releases</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2 has-children"><a class="reference internal" href="../whatsnew_1_5.html">What’s new in gevent 1.5</a><input class="toctree-checkbox" id="toctree-checkbox-9" name="toctree-checkbox-9" role="switch" type="checkbox"/><label for="toctree-checkbox-9"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.5</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="../changelog_1_5.html">Changes for 1.5</a></li> </ul> </li> <li class="toctree-l2 has-children"><a class="reference internal" href="../whatsnew_1_4.html">What’s new in gevent 1.4</a><input class="toctree-checkbox" id="toctree-checkbox-10" name="toctree-checkbox-10" role="switch" type="checkbox"/><label for="toctree-checkbox-10"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.4</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="../changelog_1_4.html">Changes for 1.4</a></li> </ul> </li> <li class="toctree-l2 has-children"><a class="reference internal" href="../whatsnew_1_3.html">What’s new in gevent 1.3</a><input class="toctree-checkbox" id="toctree-checkbox-11" name="toctree-checkbox-11" role="switch" type="checkbox"/><label for="toctree-checkbox-11"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.3</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="../changelog_1_3.html">Changes for 1.3</a></li> </ul> </li> <li class="toctree-l2 has-children"><a class="reference internal" href="../whatsnew_1_2.html">What’s new in gevent 1.2</a><input class="toctree-checkbox" id="toctree-checkbox-12" name="toctree-checkbox-12" role="switch" type="checkbox"/><label for="toctree-checkbox-12"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.2</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="../changelog_1_2.html">Changes for 1.2</a></li> </ul> </li> <li class="toctree-l2 has-children"><a class="reference internal" href="../whatsnew_1_1.html">What’s new in gevent 1.1</a><input class="toctree-checkbox" id="toctree-checkbox-13" name="toctree-checkbox-13" role="switch" type="checkbox"/><label for="toctree-checkbox-13"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.1</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="../changelog_1_1.html">Changes for 1.1</a></li> </ul> </li> <li class="toctree-l2 has-children"><a class="reference internal" href="../whatsnew_1_0.html">What’s new in gevent 1.0</a><input class="toctree-checkbox" id="toctree-checkbox-14" name="toctree-checkbox-14" role="switch" type="checkbox"/><label for="toctree-checkbox-14"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.0</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="../changelog_1_0.html">Changes for 1.0</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_5.html">Changes for 1.5</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_4.html">Changes for 1.4</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_3.html">Changes for 1.3</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_2.html">Changes for 1.2</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_1.html">Changes for 1.1</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_1_0.html">Changes for 1.0</a></li> <li class="toctree-l2"><a class="reference internal" href="../changelog_pre.html">Changes before gevent 1.0</a></li> </ul> </li> </ul> </div> </div> </div> </div> </aside> <div class="main"> <div class="content"> <div class="article-container"> <a href="#" class="back-to-top muted-link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path> </svg> <span>Back to top</span> </a> <div class="content-icon-container"> <div class="theme-toggle-container theme-toggle-content"> <button class="theme-toggle"> <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg> <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg> <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> </button> </div> <label class="toc-overlay-icon toc-content-icon" for="__toc"> <div class="visually-hidden">Toggle table of contents sidebar</div> <i class="icon"><svg><use href="#svg-toc"></use></svg></i> </label> </div> <article role="main" id="furo-main-content"> <section id="module-gevent.pool"> <span id="gevent-pool-managing-greenlets-in-a-group"></span><h1><a class="reference internal" href="#module-gevent.pool" title="gevent.pool"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.pool</span></code></a> – Managing greenlets in a group<a class="headerlink" href="#module-gevent.pool" title="Link to this heading">¶</a></h1> <dl class="py class"> <dt class="sig sig-object py" id="gevent.pool.Group"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">Group</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group" title="Link to this definition">¶</a></dt> <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">GroupMappingMixin</span></code></p> <p>Maintain a group of greenlets that are still running, without limiting their number.</p> <p>Links to each item and removes it upon notification.</p> <p>Groups can be iterated to discover what greenlets they are tracking, they can be tested to see if they contain a greenlet, and they know the number (len) of greenlets they are tracking. If they are not tracking any greenlets, they are False in a boolean context.</p> <dl class="py attribute"> <dt class="sig sig-object py" id="gevent.pool.Group.greenlet_class"> <span class="sig-name descname"><span class="pre">greenlet_class</span></span><a class="headerlink" href="#gevent.pool.Group.greenlet_class" title="Link to this definition">¶</a></dt> <dd><p>Either <a class="reference internal" href="gevent.greenlet.html#gevent.Greenlet" title="gevent.Greenlet"><code class="xref py py-class docutils literal notranslate"><span class="pre">gevent.Greenlet</span></code></a> (the default) or a subclass. These are the type of object we will <a class="reference internal" href="#gevent.pool.Group.spawn" title="gevent.pool.Group.spawn"><code class="xref py py-meth docutils literal notranslate"><span class="pre">spawn()</span></code></a>. This can be changed on an instance or in a subclass.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.__len__"> <span class="sig-name descname"><span class="pre">__len__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.__len__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.__len__" title="Link to this definition">¶</a></dt> <dd><p>Answer how many greenlets we are tracking. Note that if we are empty, we are False in a boolean context.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.__contains__"> <span class="sig-name descname"><span class="pre">__contains__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">item</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.__contains__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.__contains__" title="Link to this definition">¶</a></dt> <dd><p>Answer if we are tracking the given greenlet.</p> </dd></dl> <dl class="py attribute"> <dt class="sig sig-object py" id="id0"> <span class="sig-name descname"><span class="pre">greenlet_class</span></span><a class="headerlink" href="#id0" title="Link to this definition">¶</a></dt> <dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">Greenlet</span></code></p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.add"> <span class="sig-name descname"><span class="pre">add</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">greenlet</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.add"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.add" title="Link to this definition">¶</a></dt> <dd><p>Begin tracking the <em>greenlet</em>.</p> <p>If this group is <a class="reference internal" href="#gevent.pool.Group.full" title="gevent.pool.Group.full"><code class="xref py py-meth docutils literal notranslate"><span class="pre">full()</span></code></a>, then this method may block until it is possible to track the greenlet.</p> <p>Typically the <em>greenlet</em> should <strong>not</strong> be started when it is added because if this object blocks in this method, then the <em>greenlet</em> may run to completion before it is tracked.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.apply"> <span class="sig-name descname"><span class="pre">apply</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">kwds</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gevent.pool.Group.apply" title="Link to this definition">¶</a></dt> <dd><p>Rough quivalent of the <a class="reference internal" href="#gevent.pool.Group.apply" title="gevent.pool.Group.apply"><code class="xref py py-func docutils literal notranslate"><span class="pre">apply()</span></code></a> builtin function blocking until the result is ready and returning it.</p> <p>The <code class="docutils literal notranslate"><span class="pre">func</span></code> will <em>usually</em>, but not <em>always</em>, be run in a way that allows the current greenlet to switch out (for example, in a new greenlet or thread, depending on implementation). But if the current greenlet or thread is already one that was spawned by this pool, the pool may choose to immediately run the <code class="xref py py-obj docutils literal notranslate"><span class="pre">func</span></code> synchronously.</p> <p>Any exception <code class="docutils literal notranslate"><span class="pre">func</span></code> raises will be propagated to the caller of <code class="docutils literal notranslate"><span class="pre">apply</span></code> (that is, this method will raise the exception that <code class="docutils literal notranslate"><span class="pre">func</span></code> raised).</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.apply_async"> <span class="sig-name descname"><span class="pre">apply_async</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">kwds</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gevent.pool.Group.apply_async" title="Link to this definition">¶</a></dt> <dd><p>A variant of the <a class="reference internal" href="#gevent.pool.Group.apply" title="gevent.pool.Group.apply"><code class="xref py py-meth docutils literal notranslate"><span class="pre">apply()</span></code></a> method which returns a <a class="reference internal" href="gevent.greenlet.html#gevent.Greenlet" title="gevent.Greenlet"><code class="xref py py-class docutils literal notranslate"><span class="pre">Greenlet</span></code></a> object.</p> <p>When the returned greenlet gets to run, it <em>will</em> call <a class="reference internal" href="#gevent.pool.Group.apply" title="gevent.pool.Group.apply"><code class="xref py py-meth docutils literal notranslate"><span class="pre">apply()</span></code></a>, passing in <em>func</em>, <em>args</em> and <em>kwds</em>.</p> <p>If <em>callback</em> is specified, then it should be a callable which accepts a single argument. When the result becomes ready callback is applied to it (unless the call failed).</p> <p>This method will never block, even if this group is full (that is, even if <a class="reference internal" href="#gevent.pool.Group.spawn" title="gevent.pool.Group.spawn"><code class="xref py py-meth docutils literal notranslate"><span class="pre">spawn()</span></code></a> would block, this method will not).</p> <div class="admonition caution"> <p class="admonition-title">Caution</p> <p>The returned greenlet may or may not be tracked as part of this group, so <a class="reference internal" href="#gevent.pool.Group.join" title="gevent.pool.Group.join"><code class="xref py py-meth docutils literal notranslate"><span class="pre">joining</span></code></a> this group is not a reliable way to wait for the results to be available or for the returned greenlet to run; instead, join the returned greenlet.</p> </div> <div class="admonition tip"> <p class="admonition-title">Tip</p> <p>Because <a class="reference internal" href="gevent.threadpool.html#gevent.threadpool.ThreadPool" title="gevent.threadpool.ThreadPool"><code class="xref py py-class docutils literal notranslate"><span class="pre">ThreadPool</span></code></a> objects do not track greenlets, the returned greenlet will never be a part of it. To reduce overhead and improve performance, <a class="reference internal" href="#gevent.pool.Group" title="gevent.pool.Group"><code class="xref py py-class docutils literal notranslate"><span class="pre">Group</span></code></a> and <a class="reference internal" href="#gevent.pool.Pool" title="gevent.pool.Pool"><code class="xref py py-class docutils literal notranslate"><span class="pre">Pool</span></code></a> may choose to track the returned greenlet. These are implementation details that may change.</p> </div> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.apply_cb"> <span class="sig-name descname"><span class="pre">apply_cb</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">kwds</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gevent.pool.Group.apply_cb" title="Link to this definition">¶</a></dt> <dd><p><a class="reference internal" href="#gevent.pool.Group.apply" title="gevent.pool.Group.apply"><code class="xref py py-meth docutils literal notranslate"><span class="pre">apply()</span></code></a> the given <em>func(*args, **kwds)</em>, and, if a <em>callback</em> is given, run it with the results of <em>func</em> (unless an exception was raised.)</p> <p>The <em>callback</em> may be called synchronously or asynchronously. If called asynchronously, it will not be tracked by this group. (<a class="reference internal" href="#gevent.pool.Group" title="gevent.pool.Group"><code class="xref py py-class docutils literal notranslate"><span class="pre">Group</span></code></a> and <a class="reference internal" href="#gevent.pool.Pool" title="gevent.pool.Pool"><code class="xref py py-class docutils literal notranslate"><span class="pre">Pool</span></code></a> call it asynchronously in a new greenlet; <a class="reference internal" href="gevent.threadpool.html#gevent.threadpool.ThreadPool" title="gevent.threadpool.ThreadPool"><code class="xref py py-class docutils literal notranslate"><span class="pre">ThreadPool</span></code></a> calls it synchronously in the current greenlet.)</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.discard"> <span class="sig-name descname"><span class="pre">discard</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">greenlet</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.discard"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.discard" title="Link to this definition">¶</a></dt> <dd><p>Stop tracking the greenlet.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.full"> <span class="sig-name descname"><span class="pre">full</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.full"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.full" title="Link to this definition">¶</a></dt> <dd><p>Return a value indicating whether this group can track more greenlets.</p> <p>In this implementation, because there are no limits on the number of tracked greenlets, this will always return a <code class="docutils literal notranslate"><span class="pre">False</span></code> value.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.imap"> <span class="sig-name descname"><span class="pre">imap</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">iterables</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">maxsize</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">iterable</span></span></span><a class="headerlink" href="#gevent.pool.Group.imap" title="Link to this definition">¶</a></dt> <dd><p>An equivalent of <code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.imap()</span></code>, operating in parallel. The <em>func</em> is applied to each element yielded from each iterable in <em>iterables</em> in turn, collecting the result.</p> <p>If this object has a bound on the number of active greenlets it can contain (such as <a class="reference internal" href="#gevent.pool.Pool" title="gevent.pool.Pool"><code class="xref py py-class docutils literal notranslate"><span class="pre">Pool</span></code></a>), then at most that number of tasks will operate in parallel.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><p><strong>maxsize</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.13)"><em>int</em></a>) – <p>If given and not-None, specifies the maximum number of finished results that will be allowed to accumulate awaiting the reader; more than that number of results will cause map function greenlets to begin to block. This is most useful if there is a great disparity in the speed of the mapping code and the consumer and the results consume a great deal of resources.</p> <div class="admonition note"> <p class="admonition-title">Note</p> <p>This is separate from any bound on the number of active parallel tasks, though they may have some interaction (for example, limiting the number of parallel tasks to the smallest bound).</p> </div> <div class="admonition note"> <p class="admonition-title">Note</p> <p>Using a bound is slightly more computationally expensive than not using a bound.</p> </div> <div class="admonition tip"> <p class="admonition-title">Tip</p> <p>The <a class="reference internal" href="#gevent.pool.Group.imap_unordered" title="gevent.pool.Group.imap_unordered"><code class="xref py py-meth docutils literal notranslate"><span class="pre">imap_unordered()</span></code></a> method makes much better use of this parameter. Some additional, unspecified, number of objects may be required to be kept in memory to maintain order by this function.</p> </div> </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><p>An iterable object.</p> </dd> </dl> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.1b3: </span>Added the <em>maxsize</em> keyword parameter.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.1a1: </span>Accept multiple <em>iterables</em> to iterate in parallel.</p> </div> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.imap_unordered"> <span class="sig-name descname"><span class="pre">imap_unordered</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">iterables</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">maxsize</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">iterable</span></span></span><a class="headerlink" href="#gevent.pool.Group.imap_unordered" title="Link to this definition">¶</a></dt> <dd><p>The same as <a class="reference internal" href="#gevent.pool.Group.imap" title="gevent.pool.Group.imap"><code class="xref py py-meth docutils literal notranslate"><span class="pre">imap()</span></code></a> except that the ordering of the results from the returned iterator should be considered in arbitrary order.</p> <p>This is lighter weight than <a class="reference internal" href="#gevent.pool.Group.imap" title="gevent.pool.Group.imap"><code class="xref py py-meth docutils literal notranslate"><span class="pre">imap()</span></code></a> and should be preferred if order doesn’t matter.</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="#gevent.pool.Group.imap" title="gevent.pool.Group.imap"><code class="xref py py-meth docutils literal notranslate"><span class="pre">imap()</span></code></a> for more details.</p> </div> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.join"> <span class="sig-name descname"><span class="pre">join</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_error</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.join"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.join" title="Link to this definition">¶</a></dt> <dd><p>Wait for this group to become empty <em>at least once</em>.</p> <p>If there are no greenlets in the group, returns immediately.</p> <div class="admonition note"> <p class="admonition-title">Note</p> <p>By the time the waiting code (the caller of this method) regains control, a greenlet may have been added to this group, and so this object may no longer be empty. (That is, <code class="docutils literal notranslate"><span class="pre">group.join();</span> <span class="pre">assert</span> <span class="pre">len(group)</span> <span class="pre">==</span> <span class="pre">0</span></code> is not guaranteed to hold.) This method only guarantees that the group reached a <code class="docutils literal notranslate"><span class="pre">len</span></code> of 0 at some point.</p> </div> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><p><strong>raise_error</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><em>bool</em></a>) – If True (<em>not</em> the default), if any greenlet that finished while the join was in progress raised an exception, that exception will be raised to the caller of this method. If multiple greenlets raised exceptions, which one gets re-raised is not determined. Only greenlets currently in the group when this method is called are guaranteed to be checked for exceptions.</p> </dd> <dt class="field-even">Return bool<span class="colon">:</span></dt> <dd class="field-even"><p>A value indicating whether this group became empty. If the timeout is specified and the group did not become empty during that timeout, then this will be a false value. Otherwise it will be a true value.</p> </dd> </dl> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.2a1: </span>Add the return value.</p> </div> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.kill"> <span class="sig-name descname"><span class="pre">kill</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">exception=<class</span> <span class="pre">'greenlet.GreenletExit'></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">block=True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout=None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.kill"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.kill" title="Link to this definition">¶</a></dt> <dd><p>Kill all greenlets being tracked by this group.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.killone"> <span class="sig-name descname"><span class="pre">killone</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">greenlet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exception=<class</span> <span class="pre">'greenlet.GreenletExit'></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">block=True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout=None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.killone"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.killone" title="Link to this definition">¶</a></dt> <dd><p>If the given <em>greenlet</em> is running and being tracked by this group, kill it.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.map"> <span class="sig-name descname"><span class="pre">map</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iterable</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gevent.pool.Group.map" title="Link to this definition">¶</a></dt> <dd><p>Return a list made by applying the <em>func</em> to each element of the iterable.</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="#gevent.pool.Group.imap" title="gevent.pool.Group.imap"><code class="xref py py-meth docutils literal notranslate"><span class="pre">imap()</span></code></a></p> </div> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.map_async"> <span class="sig-name descname"><span class="pre">map_async</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iterable</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#gevent.pool.Group.map_async" title="Link to this definition">¶</a></dt> <dd><p>A variant of the map() method which returns a Greenlet object that is executing the map function.</p> <p>If callback is specified then it should be a callable which accepts a single argument.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.spawn"> <span class="sig-name descname"><span class="pre">spawn</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.spawn"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.spawn" title="Link to this definition">¶</a></dt> <dd><p>Begin a new greenlet with the given arguments (which are passed to the greenlet constructor) and add it to the collection of greenlets this group is monitoring.</p> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> <dd class="field-odd"><p>The newly started greenlet.</p> </dd> </dl> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.start"> <span class="sig-name descname"><span class="pre">start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">greenlet</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.start" title="Link to this definition">¶</a></dt> <dd><p>Add the <strong>unstarted</strong> <em>greenlet</em> to the collection of greenlets this group is monitoring, and then start it.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Group.wait_available"> <span class="sig-name descname"><span class="pre">wait_available</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Group.wait_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Group.wait_available" title="Link to this definition">¶</a></dt> <dd><p>Block until it is possible to <a class="reference internal" href="#gevent.pool.Group.spawn" title="gevent.pool.Group.spawn"><code class="xref py py-meth docutils literal notranslate"><span class="pre">spawn()</span></code></a> a new greenlet.</p> <p>In this implementation, because there are no limits on the number of tracked greenlets, this will always return immediately.</p> </dd></dl> </dd></dl> <dl class="py class"> <dt class="sig sig-object py" id="gevent.pool.PoolFull"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">PoolFull</span></span><a class="reference internal" href="../_modules/gevent/pool.html#PoolFull"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.PoolFull" title="Link to this definition">¶</a></dt> <dd><p>Bases: <a class="reference internal" href="gevent.queue.html#gevent.queue.Full" title="queue.Full"><code class="xref py py-class docutils literal notranslate"><span class="pre">Full</span></code></a></p> <p>Raised when a Pool is full and an attempt was made to add a new greenlet to it in non-blocking mode.</p> </dd></dl> <dl class="py class"> <dt class="sig sig-object py" id="gevent.pool.Pool"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">Pool</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">greenlet_class</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Pool"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Pool" title="Link to this definition">¶</a></dt> <dd><p>Bases: <a class="reference internal" href="#gevent.pool.Group" title="gevent.pool.Group"><code class="xref py py-class docutils literal notranslate"><span class="pre">Group</span></code></a></p> <p>Create a new pool.</p> <p>A pool is like a group, but the maximum number of members is governed by the <em>size</em> parameter.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><p><strong>size</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.13)"><em>int</em></a>) – <p>If given, this non-negative integer is the maximum count of active greenlets that will be allowed in this pool. A few values have special significance:</p> <ul class="simple"> <li><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a> (the default) places no limit on the number of greenlets. This is useful when you want to track, but not limit, greenlets. In general, a <a class="reference internal" href="#gevent.pool.Group" title="gevent.pool.Group"><code class="xref py py-class docutils literal notranslate"><span class="pre">Group</span></code></a> may be a more efficient way to achieve the same effect, but some things need the additional abilities of this class (one example being the <em>spawn</em> parameter of <a class="reference internal" href="gevent.baseserver.html#gevent.baseserver.BaseServer" title="gevent.baseserver.BaseServer"><code class="xref py py-class docutils literal notranslate"><span class="pre">gevent.baseserver.BaseServer</span></code></a> and its subclass <a class="reference internal" href="gevent.pywsgi.html#gevent.pywsgi.WSGIServer" title="gevent.pywsgi.WSGIServer"><code class="xref py py-class docutils literal notranslate"><span class="pre">gevent.pywsgi.WSGIServer</span></code></a>).</p></li> <li><p><code class="docutils literal notranslate"><span class="pre">0</span></code> creates a pool that can never have any active greenlets. Attempting to spawn in this pool will block forever. This is only useful if an application uses <a class="reference internal" href="#gevent.pool.Pool.wait_available" title="gevent.pool.Pool.wait_available"><code class="xref py py-meth docutils literal notranslate"><span class="pre">wait_available()</span></code></a> with a timeout and checks <a class="reference internal" href="#gevent.pool.Pool.free_count" title="gevent.pool.Pool.free_count"><code class="xref py py-meth docutils literal notranslate"><span class="pre">free_count()</span></code></a> before attempting to spawn.</p></li> </ul> </p> </dd> </dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Pool.add"> <span class="sig-name descname"><span class="pre">add</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">greenlet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">blocking</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Pool.add"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Pool.add" title="Link to this definition">¶</a></dt> <dd><p>Begin tracking the given <strong>unstarted</strong> greenlet, possibly blocking until space is available.</p> <p>Usually you should call <a class="reference internal" href="#gevent.pool.Pool.start" title="gevent.pool.Pool.start"><code class="xref py py-meth docutils literal notranslate"><span class="pre">start()</span></code></a> to track and start the greenlet instead of using this lower-level method, or <code class="xref py py-meth docutils literal notranslate"><span class="pre">spawn()</span></code> to also create the greenlet.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> <li><p><strong>blocking</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.13)"><em>bool</em></a>) – If True (the default), this function will block until the pool has space or a timeout occurs. If False, this function will immediately raise a Timeout if the pool is currently full.</p></li> <li><p><strong>timeout</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.13)"><em>float</em></a>) – The maximum number of seconds this method will block, if <code class="docutils literal notranslate"><span class="pre">blocking</span></code> is True. (Ignored if <code class="docutils literal notranslate"><span class="pre">blocking</span></code> is False.)</p></li> </ul> </dd> <dt class="field-even">Raises<span class="colon">:</span></dt> <dd class="field-even"><p><a class="reference internal" href="#gevent.pool.PoolFull" title="gevent.pool.PoolFull"><strong>PoolFull</strong></a> – if either <code class="docutils literal notranslate"><span class="pre">blocking</span></code> is False and the pool was full, or if <code class="docutils literal notranslate"><span class="pre">blocking</span></code> is True and <code class="docutils literal notranslate"><span class="pre">timeout</span></code> was exceeded.</p> </dd> </dl> <div class="admonition caution"> <p class="admonition-title">Caution</p> <p>If the <em>greenlet</em> has already been started and <em>blocking</em> is true, then the greenlet may run to completion while the current greenlet blocks waiting to track it. This would enable higher concurrency than desired.</p> </div> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="#gevent.pool.Group.add" title="gevent.pool.Group.add"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Group.add()</span></code></a></p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.3.0: </span>Added the <code class="docutils literal notranslate"><span class="pre">blocking</span></code> and <code class="docutils literal notranslate"><span class="pre">timeout</span></code> parameters.</p> </div> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Pool.free_count"> <span class="sig-name descname"><span class="pre">free_count</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Pool.free_count"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Pool.free_count" title="Link to this definition">¶</a></dt> <dd><p>Return a number indicating <em>approximately</em> how many more members can be added to this pool.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Pool.full"> <span class="sig-name descname"><span class="pre">full</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Pool.full"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Pool.full" title="Link to this definition">¶</a></dt> <dd><p>Return a boolean indicating whether this pool is full, e.g. if <a class="reference internal" href="#gevent.pool.Pool.add" title="gevent.pool.Pool.add"><code class="xref py py-meth docutils literal notranslate"><span class="pre">add()</span></code></a> would block.</p> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> <dd class="field-odd"><p>False if there is room for new members, True if there isn’t.</p> </dd> </dl> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Pool.start"> <span class="sig-name descname"><span class="pre">start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">greenlet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">blocking</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><span class="pre">None</span></a></span></span><a class="reference internal" href="../_modules/gevent/pool.html#Pool.start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Pool.start" title="Link to this definition">¶</a></dt> <dd><p>Add the <strong>unstarted</strong> <em>greenlet</em> to the collection of greenlets this group is monitoring and then start it.</p> <p>Parameters are as for <a class="reference internal" href="#gevent.pool.Pool.add" title="gevent.pool.Pool.add"><code class="xref py py-meth docutils literal notranslate"><span class="pre">add()</span></code></a>.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.pool.Pool.wait_available"> <span class="sig-name descname"><span class="pre">wait_available</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/pool.html#Pool.wait_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.pool.Pool.wait_available" title="Link to this definition">¶</a></dt> <dd><p>Wait until it’s possible to spawn a greenlet in this pool.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><p><strong>timeout</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.13)"><em>float</em></a>) – If given, only wait the specified number of seconds.</p> </dd> </dl> <div class="admonition warning"> <p class="admonition-title">Warning</p> <p>If the pool was initialized with a size of 0, this method will block forever unless a timeout is given.</p> </div> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> <dd class="field-odd"><p>A number indicating how many new greenlets can be put into the pool without blocking.</p> </dd> </dl> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.1a3: </span>Added the <code class="docutils literal notranslate"><span class="pre">timeout</span></code> parameter.</p> </div> </dd></dl> </dd></dl> </section> </article> </div> <footer> <div class="related-pages"> <a class="next-page" href="gevent.pywsgi.html"> <div class="page-info"> <div class="context"> <span>Next</span> </div> <div class="title"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.pywsgi</span></code> – A pure-Python, gevent-friendly WSGI server</div> </div> <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> </a> <a class="prev-page" href="gevent.os.html"> <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> <div class="page-info"> <div class="context"> <span>Previous</span> </div> <div class="title"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.os</span></code> – Low-level operating system functions from <code class="xref py py-mod docutils literal notranslate"><span class="pre">os</span></code></div> </div> </a> </div> <div class="bottom-of-page"> <div class="left-details"> <div class="copyright"> Copyright © 2009-2023, gevent contributors </div> Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s <a href="https://github.com/pradyunsg/furo">Furo</a> </div> <div class="right-details"> </div> </div> </footer> </div> <aside class="toc-drawer"> <div class="toc-sticky toc-scroll"> <div class="toc-title-container"> <span class="toc-title"> On this page </span> </div> <div class="toc-tree-container"> <div class="toc-tree"> <ul> <li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.pool</span></code> – Managing greenlets in a group</a><ul> <li><a class="reference internal" href="#gevent.pool.Group"><code class="docutils literal notranslate"><span class="pre">Group</span></code></a><ul> <li><a class="reference internal" href="#gevent.pool.Group.greenlet_class"><code class="docutils literal notranslate"><span class="pre">Group.greenlet_class</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.__len__"><code class="docutils literal notranslate"><span class="pre">Group.__len__()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.__contains__"><code class="docutils literal notranslate"><span class="pre">Group.__contains__()</span></code></a></li> <li><a class="reference internal" href="#id0"><code class="docutils literal notranslate"><span class="pre">Group.greenlet_class</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.add"><code class="docutils literal notranslate"><span class="pre">Group.add()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.apply"><code class="docutils literal notranslate"><span class="pre">Group.apply()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.apply_async"><code class="docutils literal notranslate"><span class="pre">Group.apply_async()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.apply_cb"><code class="docutils literal notranslate"><span class="pre">Group.apply_cb()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.discard"><code class="docutils literal notranslate"><span class="pre">Group.discard()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.full"><code class="docutils literal notranslate"><span class="pre">Group.full()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.imap"><code class="docutils literal notranslate"><span class="pre">Group.imap()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.imap_unordered"><code class="docutils literal notranslate"><span class="pre">Group.imap_unordered()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.join"><code class="docutils literal notranslate"><span class="pre">Group.join()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.kill"><code class="docutils literal notranslate"><span class="pre">Group.kill()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.killone"><code class="docutils literal notranslate"><span class="pre">Group.killone()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.map"><code class="docutils literal notranslate"><span class="pre">Group.map()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.map_async"><code class="docutils literal notranslate"><span class="pre">Group.map_async()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.spawn"><code class="docutils literal notranslate"><span class="pre">Group.spawn()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.start"><code class="docutils literal notranslate"><span class="pre">Group.start()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Group.wait_available"><code class="docutils literal notranslate"><span class="pre">Group.wait_available()</span></code></a></li> </ul> </li> <li><a class="reference internal" href="#gevent.pool.PoolFull"><code class="docutils literal notranslate"><span class="pre">PoolFull</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Pool"><code class="docutils literal notranslate"><span class="pre">Pool</span></code></a><ul> <li><a class="reference internal" href="#gevent.pool.Pool.add"><code class="docutils literal notranslate"><span class="pre">Pool.add()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Pool.free_count"><code class="docutils literal notranslate"><span class="pre">Pool.free_count()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Pool.full"><code class="docutils literal notranslate"><span class="pre">Pool.full()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Pool.start"><code class="docutils literal notranslate"><span class="pre">Pool.start()</span></code></a></li> <li><a class="reference internal" href="#gevent.pool.Pool.wait_available"><code class="docutils literal notranslate"><span class="pre">Pool.wait_available()</span></code></a></li> </ul> </li> </ul> </li> </ul> </div> </div> </div> </aside> </div> </div><script src="../_static/documentation_options.js?v=32fdf4fc"></script> <script src="../_static/doctools.js?v=9bcbadda"></script> <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/scripts/furo.js?v=5fa4622c"></script> </body> </html>