This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
标题: threading._get_ident(): remove it in the doc or make it public
类型: Stage: resolved
Components: Documentation, Library (Lib) Versions: Python 3.3
process
状态: closed Resolution: fixed
Dependencies: 后续:
分配给: docs@python 抄送列表: brett.cannon, docs@python, eric.araujo, georg.brandl, pitrou, python-dev, rhettinger, vstinner
优先级: normal 关键字: patch

Created on 2011-05-07 10:24 by vstinner, last changed 2022-04-11 14:57 by admin. This issue is now closed.

文件
文件名 上传时间 Description 编辑
threading_get_ident.patch vstinner, 2011-05-24 10:25 review
Messages (10)
msg135441 - (view) Author: STINNER Victor (vstinner) * (Python committer) 日期: 2011-05-07 10:24
I don't know why threading._get_ident() (which is _thread.get_ident()) is private: this function is safe.

This function becomes useful with pthread_kill() which will be added by #8407.
msg135443 - (view) Author: STINNER Victor (vstinner) * (Python committer) 日期: 2011-05-07 10:26
I think that threading._get_ident() is more reliable than threading.current_thread().ident because Thread.ident can be None in some cases.
msg136086 - (view) Author: STINNER Victor (vstinner) * (Python committer) 日期: 2011-05-16 13:50
@pitrou: What do you think Antoine?
msg136088 - (view) Author: STINNER Victor (vstinner) * (Python committer) 日期: 2011-05-16 13:56
The threading API changed in Python 3 with the PEP 3108, especially and issue #2875. Extract of the PEP:

"thread [done]

 * People should use 'threading' instead.
   * Rename 'thread' to _thread.
   * Deprecate dummy_thread and rename _dummy_thread.
   * Move thread.get_ident over to threading.
 * Guido has previously supported the deprecation [13]."

The issue was closed by the commit [7fe3a8648ce2], "Issue #2875: Rename thread to _thread and dummy_thread to _dummy_thread."
msg136089 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) 日期: 2011-05-16 13:59
> I think that threading._get_ident() is more reliable than
> threading.current_thread().ident because Thread.ident can be None in
> some cases.

In which case can it be None?
msg136092 - (view) Author: STINNER Victor (vstinner) * (Python committer) 日期: 2011-05-16 14:12
> In which case can it be None?

Oh, I misunderstood threading.py. current_thread().ident cannot be None.

During the bootstrap of a thread, Thread._ident is None, but current_thread().ident is not None because current_thread() creates a dummy thread object having the right identifer. This dummy object is destroyed at soon as the Thread object is started (see Thread._bootstrap_inner).

current_thread().ident is a little bit "suboptimal" because it gets the identifier of the thread, it reads the corresponding thread object, and then it gets the identifier of the thread object.

def current_thread():
    ...
    return _active[_get_ident()]
    ...
msg136647 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) 日期: 2011-05-23 14:31
I find it strange that you propose to make a function public and remove its doc :)  Is a negative missing in the bug title?
msg136731 - (view) Author: STINNER Victor (vstinner) * (Python committer) 日期: 2011-05-24 10:25
threading_get_ident.patch: make get_ident() public, replace threading._get_ident() by threading.get_ident().

According to this patch, get_ident() function *is* used: it is used by the logging and reprlib modules (and many tests). My patch avoids the usage of the low-level module, _thread_, in logging and reprlib.

I adapted signal.pthread_kill() documentation to replace threading.current_thread().ident by threading.get_ident().
msg137328 - (view) Author: Roundup Robot (python-dev) (Python triager) 日期: 2011-05-30 21:04
New changeset 5548197d1f22 by Victor Stinner in branch 'default':
Close #12028: Make threading._get_ident() public, rename it to
http://hg.python.org/cpython/rev/5548197d1f22
msg137333 - (view) Author: Roundup Robot (python-dev) (Python triager) 日期: 2011-05-30 21:23
New changeset 6387aa6b496d by Victor Stinner in branch 'default':
Issue #12028: fix NEWS entry
http://hg.python.org/cpython/rev/6387aa6b496d
历史
日期 用户 动作 参数
2022-04-11 14:57:17admin修改github: 56237
2011-05-30 21:23:58python-dev修改消息: + msg137333
2011-05-30 21:04:22python-dev修改状态: open -> closed

抄送: + python-dev
消息: + msg137328

resolution: fixed
stage: resolved
2011-05-24 10:25:43vstinner修改文件: + threading_get_ident.patch
keywords: + patch
消息: + msg136731
2011-05-23 14:32:40vstinner修改标题: threading._get_ident(): remove it in the doc and make it public -> threading._get_ident(): remove it in the doc or make it public
2011-05-23 14:31:15eric.araujo修改抄送: + eric.araujo
消息: + msg136647
2011-05-17 02:12:08rhettinger修改抄送: + rhettinger
2011-05-16 14:12:18vstinner修改消息: + msg136092
2011-05-16 13:59:01pitrou修改消息: + msg136089
2011-05-16 13:56:24vstinner修改抄送: + brett.cannon, georg.brandl
消息: + msg136088
2011-05-16 13:50:13vstinner修改抄送: + pitrou
消息: + msg136086
2011-05-07 10:26:38vstinner修改消息: + msg135443
2011-05-07 10:24:44vstinner创建