diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2021-02-24 00:39:51 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-24 00:39:51 (GMT) |
commit | 2827e8a177c2a6584fada594bca6829c53a2872f (patch) | |
tree | 4110f13a66a62ce34205652c8df4fd8bb506bad2 | |
parent | b798ab06937f8bb24b444a49dd42e11fff15e654 (diff) | |
download | cpython-2827e8a177c2a6584fada594bca6829c53a2872f.zip cpython-2827e8a177c2a6584fada594bca6829c53a2872f.tar.gz cpython-2827e8a177c2a6584fada594bca6829c53a2872f.tar.bz2 |
bpo-43283: Add IDLE doc paragraph about print speed (GH-24615)
Printing to IDLE's Shell is often slower than printing to a system
terminal, but it can be made faster by pre-formatting a single
string before printing.
-rw-r--r-- | Doc/library/idle.rst | 9 | ||||
-rw-r--r-- | Lib/idlelib/NEWS.txt | 4 | ||||
-rw-r--r-- | Lib/idlelib/help.html | 10 | ||||
-rw-r--r-- | Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst | 3 |
4 files changed, 25 insertions, 1 deletions
diff --git a/Doc/library/idle.rst b/Doc/library/idle.rst index fc45e31..2b9bd4b 100644 --- a/Doc/library/idle.rst +++ b/Doc/library/idle.rst @@ -726,6 +726,15 @@ with objects that get input from and send output to the Shell window. The original values stored in ``sys.__stdin__``, ``sys.__stdout__``, and ``sys.__stderr__`` are not touched, but may be ``None``. +Sending print output from one process to a text widget in another is +slower than printing to a system terminal in the same process. +This has the most effect when printing multiple arguments, as the string +for each argument, each separator, the newline are sent separately. +For development, this is usually not a problem, but if one wants to +print faster in IDLE, format and join together everything one wants +displayed together and then print a single string. Both format strings +and :meth:`str.join` can help combine fields and lines. + IDLE's standard stream replacements are not inherited by subprocesses created in the execution process, whether directly by user code or by modules such as multiprocessing. If such subprocess use ``input`` from diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index 840fc62..30d5b2f 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -3,6 +3,10 @@ Released on 2021-10-04? ====================================== +bpo-43283: Document why printing to IDLE's Shell is often slower than +printing to a system terminal and that it can be made faster by +pre-formatting a single string before printing. + bpo-23544: Disable Debug=>Stack Viewer when user code is running or Debugger is active, to prevent hang or crash. Patch by Zackery Spytz. diff --git a/Lib/idlelib/help.html b/Lib/idlelib/help.html index 1eefa50..924042d 100644 --- a/Lib/idlelib/help.html +++ b/Lib/idlelib/help.html @@ -679,6 +679,14 @@ process, it replaces <code class="docutils literal notranslate"><span class="pre with objects that get input from and send output to the Shell window. The original values stored in <code class="docutils literal notranslate"><span class="pre">sys.__stdin__</span></code>, <code class="docutils literal notranslate"><span class="pre">sys.__stdout__</span></code>, and <code class="docutils literal notranslate"><span class="pre">sys.__stderr__</span></code> are not touched, but may be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p> +<p>Sending print output from one process to a text widget in another is +slower than printing to a system terminal in the same process. +This has the most effect when printing multiple arguments, as the string +for each argument, each separator, the newline are sent separately. +For development, this is usually not a problem, but if one wants to +print faster in IDLE, format and join together everything one wants +displayed together and then print a single string. Both format strings +and <a class="reference internal" href="stdtypes.html#str.join" title="str.join"><code class="xref py py-meth docutils literal notranslate"><span class="pre">str.join()</span></code></a> can help combine fields and lines.</p> <p>IDLE’s standard stream replacements are not inherited by subprocesses created in the execution process, whether directly by user code or by modules such as multiprocessing. If such subprocess use <code class="docutils literal notranslate"><span class="pre">input</span></code> from @@ -982,7 +990,7 @@ also used for testing.</p> <br /> <br /> - Last updated on Feb 21, 2021. + Last updated on Feb 23, 2021. <a href="https://docs.python.org/3/bugs.html">Found a bug</a>? <br /> diff --git a/Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst b/Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst new file mode 100644 index 0000000..7a627af --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst @@ -0,0 +1,3 @@ +Document why printing to IDLE's Shell is often slower than printing to a +system terminal and that it can be made faster by pre-formatting a single +string before printing. |