Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
5db1bb81
Kaydet (Commit)
5db1bb81
authored
Ara 07, 2014
tarafından
Antoine Pitrou
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Issue #22696: Add function :func:`sys.is_finalizing` to know about interpreter shutdown.
üst
b9859dae
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
62 additions
and
6 deletions
+62
-6
glossary.rst
Doc/glossary.rst
+13
-0
gc.rst
Doc/library/gc.rst
+3
-3
sys.rst
Doc/library/sys.rst
+8
-0
weakref.rst
Doc/library/weakref.rst
+3
-3
test_sys.py
Lib/test/test_sys.py
+21
-0
NEWS
Misc/NEWS
+3
-0
sysmodule.c
Python/sysmodule.c
+11
-0
No files found.
Doc/glossary.rst
Dosyayı görüntüle @
5db1bb81
...
...
@@ -402,6 +402,19 @@ Glossary
than
compiled
ones
,
though
their
programs
generally
also
run
more
slowly
.
See
also
:
term
:`
interactive
`.
interpreter
shutdown
When
asked
to
shut
down
,
the
Python
interpreter
enters
a
special
phase
where
it
gradually
releases
all
allocated
resources
,
such
as
modules
and
various
critical
internal
structures
.
It
also
makes
several
calls
to
the
:
term
:`
garbage
collector
<
garbage
collection
>`.
This
can
trigger
the
execution
of
code
in
user
-
defined
destructors
or
weakref
callbacks
.
Code
executed
during
the
shutdown
phase
can
encounter
various
exceptions
as
the
resources
it
relies
on
may
not
function
anymore
(
common
examples
are
library
modules
or
the
warnings
machinery
).
The
main
reason
for
interpreter
shutdown
is
that
the
``
__main__
``
module
or
the
script
being
run
has
finished
executing
.
iterable
An
object
capable
of
returning
its
members
one
at
a
time
.
Examples
of
iterables
include
all
sequence
types
(
such
as
:
class
:`
list
`,
:
class
:`
str
`,
...
...
Doc/library/gc.rst
Dosyayı görüntüle @
5db1bb81
...
...
@@ -186,7 +186,7 @@ values but should not rebind them):
added to this list rather than freed.
.. versionchanged:: 3.2
If this list is non-empty at
interpreter shutdown
, a
If this list is non-empty at
:term:`interpreter shutdown`
, a
:exc:`ResourceWarning` is emitted, which is silent by default. If
:const:`DEBUG_UNCOLLECTABLE` is set, in addition all uncollectable objects
are printed.
...
...
@@ -252,8 +252,8 @@ The following constants are provided for use with :func:`set_debug`:
to the ``garbage`` list.
.. versionchanged:: 3.2
Also print the contents of the :data:`garbage` list at
interpreter
shutdown
, if it isn't empty.
Also print the contents of the :data:`garbage` list at
:term:`interpreter shutdown`
, if it isn't empty.
.. data:: DEBUG_SAVEALL
...
...
Doc/library/sys.rst
Dosyayı görüntüle @
5db1bb81
...
...
@@ -718,6 +718,14 @@ always available.
value of :func:`intern` around to benefit from it.
.. function:: is_finalizing()
Return :const:`True` if the Python interpreter is
:term:`shutting down <interpreter shutdown>`, :const:`False` otherwise.
.. versionadded:: 3.5
.. data:: last_type
last_value
last_traceback
...
...
Doc/library/weakref.rst
Dosyayı görüntüle @
5db1bb81
...
...
@@ -258,7 +258,7 @@ These method have the same issues as the and :meth:`keyrefs` method of
are called in reverse order of creation.
A finalizer will never invoke its callback during the later part of
the
interpreter shutdown
when module globals are liable to have
the
:term:`interpreter shutdown`
when module globals are liable to have
been replaced by :const:`None`.
.. method:: __call__()
...
...
@@ -527,8 +527,8 @@ follows::
Starting with Python 3.4, :meth:`__del__` methods no longer prevent
reference cycles from being garbage collected, and module globals are
no longer forced to :const:`None` during
interpreter shutdown. So this
code should work without any issues on CPython.
no longer forced to :const:`None` during
:term:`interpreter shutdown`.
So this
code should work without any issues on CPython.
However, handling of :meth:`__del__` methods is notoriously implementation
specific, since it depends on internal details of the interpreter's garbage
...
...
Lib/test/test_sys.py
Dosyayı görüntüle @
5db1bb81
...
...
@@ -744,6 +744,27 @@ class SysModuleTest(unittest.TestCase):
c
=
sys
.
getallocatedblocks
()
self
.
assertIn
(
c
,
range
(
b
-
50
,
b
+
50
))
def
test_is_finalizing
(
self
):
self
.
assertIs
(
sys
.
is_finalizing
(),
False
)
# Don't use the atexit module because _Py_Finalizing is only set
# after calling atexit callbacks
code
=
"""if 1:
import sys
class AtExit:
is_finalizing = sys.is_finalizing
print = print
def __del__(self):
self.print(self.is_finalizing(), flush=True)
# Keep a reference in the __main__ module namespace, so the
# AtExit destructor will be called at Python exit
ref = AtExit()
"""
rc
,
stdout
,
stderr
=
assert_python_ok
(
'-c'
,
code
)
self
.
assertEqual
(
stdout
.
rstrip
(),
b
'True'
)
@test.support.cpython_only
class
SizeofTest
(
unittest
.
TestCase
):
...
...
Misc/NEWS
Dosyayı görüntüle @
5db1bb81
...
...
@@ -194,6 +194,9 @@ Core and Builtins
Library
-------
-
Issue
#
22696
:
Add
function
:
func
:`
sys
.
is_finalizing
`
to
know
about
interpreter
shutdown
.
-
Issue
#
16043
:
Add
a
default
limit
for
the
amount
of
data
xmlrpclib
.
gzip_decode
will
return
.
This
resolves
CVE
-
2013
-
1753.
...
...
Python/sysmodule.c
Dosyayı görüntüle @
5db1bb81
...
...
@@ -1121,6 +1121,16 @@ PyDoc_STRVAR(sys_clear_type_cache__doc__,
"_clear_type_cache() -> None
\n
\
Clear the internal type lookup cache."
);
static
PyObject
*
sys_is_finalizing
(
PyObject
*
self
,
PyObject
*
args
)
{
return
PyBool_FromLong
(
_Py_Finalizing
!=
NULL
);
}
PyDoc_STRVAR
(
is_finalizing_doc
,
"is_finalizing()
\n
\
Return True if Python is exiting."
);
static
PyMethodDef
sys_methods
[]
=
{
/* Might as well keep this in alphabetic order */
...
...
@@ -1167,6 +1177,7 @@ static PyMethodDef sys_methods[] = {
getwindowsversion_doc
},
#endif
/* MS_WINDOWS */
{
"intern"
,
sys_intern
,
METH_VARARGS
,
intern_doc
},
{
"is_finalizing"
,
sys_is_finalizing
,
METH_NOARGS
,
is_finalizing_doc
},
#ifdef USE_MALLOPT
{
"mdebug"
,
sys_mdebug
,
METH_VARARGS
},
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment