Message303952
When Python 2.7 is built in debug mode, it displays the total number of references when the program finishes or after each statement in the interactive interpreter.
Example:
haypo@selma$ ./python
Python 2.7.14+ (heads/2.7:cc4b6f1c62, Oct 9 2017, 15:30:11)
[GCC 7.2.1 20170915 (Red Hat 7.2.1-2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2
[45025 refs]
>>> 2+2
4
[45025 refs]
>>>
[45025 refs]
[21655 refs]
While I'm Python core developer working on reference leaks for years, I *never* used this value. I only use "python -m test -R 3:3 test_xxx" to track reference leaks.
I really liked Python 3.4 which made this option an opt-in, python3 -X showrefcount: bpo-17323 (commit 1f8898a5916b942c86ee8716c37d2db388e7bf2f).
I propose to change Python 2.7 behaviour to not print this value by default, but add a new PYTHONSHOWREFCOUNT environment variable to display it. The value is displayed if PYTHONSHOWREFCOUNT is set. Other similar existing variables:
* PYTHONTHREADDEBUG
* PYTHONDUMPREFS
* PYTHONMALLOCSTATS
https://docs.python.org/2.7/using/cmdline.html#debug-mode-variables
I prefer to add a new environment style rather than adding a new -X command line option. IMHO an environment variable is less intrusive. For example, older Python 2.7 versions completely ignore unknown environment variables, whereas "python2.7 -X showrefcount ..." currently logs the "-X is reserved for implementation-specific arguments" message into stderr.
Attached PR adds PYTHONSHOWREFCOUNT. |
|
Date |
User |
Action |
Args |
2017-10-09 13:44:19 | vstinner | set | recipients:
+ vstinner |
2017-10-09 13:44:19 | vstinner | set | messageid: <1507556659.49.0.213398074469.issue31733@psf.upfronthosting.co.za> |
2017-10-09 13:44:19 | vstinner | link | issue31733 messages |
2017-10-09 13:44:19 | vstinner | create | |
|