Le ven. 3 juil. 2020 à 04:51, Inada Naoki <songofaca...@gmail.com> a écrit : > Actually, PyEval_ReleaseLock is used in three packages: > > pydevd-pycharm-202.5103.19/pydevd_attach_to_process/windows/attach.cpp > 330: DEFINE_PROC(releaseLock, PyEval_Lock*, "PyEval_ReleaseLock", > -160); > > jep-3.9.0/src/main/c/Jep/pyembed.c > 836: PyEval_ReleaseLock(); > > ptvsd-4.3.2.zip/ptvsd-4.3.2/src/ptvsd/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp > 330: DEFINE_PROC(releaseLock, PyEval_Lock*, "PyEval_ReleaseLock", > -160); > > I will keep PyEval_ReleaseLock.
The PEP 620 doesn't require to keep a deprecated forever: only to notify projects that the function is going to be removed, and try to help them to replace it. pydevd-pycharm > I think they use only PyEval_ReleaseLock(). Do they use > PyEval_AcquireLock() too? I checked with GitHub code search on the JEP project: PyEval_AcquireLock() is not used. PyEval_ReleaseLock() is called in a single function: https://github.com/ninia/jep/blob/639f6cbe512b5ce4b51412564dba8db5bbbf1e3b/src/main/c/Jep/pyembed.c#L835 Also, I'm not sure that JEP uses PyEval_ReleaseLock() properly: https://github.com/ninia/jep/issues/229#issuecomment-635467616 I don't see why a lock would hold the GIL but release it before exiting. Maybe JEP should call PyThreadState_DeleteCurrent(), which calls PyEval_ReleaseLock() internally, in pyembed_thread_close(). The _thread.start_new_thread() calls _PyThreadState_DeleteCurrent(tstate) when a thread completes, and this function calls _PyEval_ReleaseLock(tstate). Maybe PyEval_ReleaseLock() documentation should explain that. Victor -- Night gathers, and now my watch begins. It shall not end until my death. _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/7M7Z3MZRMKUN4IFRXXQXPZD4KXQCTV7C/ Code of Conduct: http://python.org/psf/codeofconduct/