gpt4 book ai didi

python - 如何构建没有线程的 python 和/或如何检测 python 是否是用线程构建的?

转载 作者:太空宇宙 更新时间:2023-11-04 05:41:10 25 4
gpt4 key购买 nike

我构建了以下版本的 python:2.6, 2.7, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.7.8, 2.7.9, 2.7.10

全部带有以下标志:

--prefix=/home/bdbaddog/tools/python-${x}-nothread --enable-shared --enable-unicode --without-threads

我在其他地方找到的建议建议线程应该抛出 ImportError 异常

python -mthreading

正在运行。然而,对于上面列出的每个版本,我得到以下输出(尽管行的顺序不同):

$tools/python-2.7.10-nothread/bin/python -mthreading
Producer-1.1
Producer-2.1
Producer-1.2
Producer-1.3
Producer-3.1
Producer-1.4
Producer-2.2
Producer-3.2
Producer-1.5
Producer-2.3
Producer-3.3
Producer-2.4
Producer-3.4
Producer-2.5
Producer-3.5

这会让我相信确实启用了线程。当我查看安装目录时,我只看到以下显着差异:

更多信息:每个产量的 python-config:

$ tools/python-2.7.10/bin/python-config --libs
-lpython2.7 -lpthread -ldl -lutil -lm
$ tools/python-2.7.10-nothread/bin/python-config --libs
-lpython2.7 -ldl -lutil -lm

我需要知道是否启用了线程,以便我的 python 脚本在任何一种情况下都可以做不同的事情。

我没有正确配置它以关闭线程吗?

最佳答案

你可以检查你是否有这样的线程:

>>> import sysconfig
>>> sysconfig.get_config_var('WITH_THREAD')

如果没有线程,则返回 0,如果有,则返回 1

或者,如果 python 不是使用线程构建的,则导入线程将引发 ImportError

此外,我能够复制您所看到的内容。只编译 --without-threads 对我有用:

seth@renegade ~/Downloads/cpython-2.7 $ ./configure --without-threads && make
...
seth@renegade ~/Downloads/cpython-2.7 $ ./python -m threading
Traceback (most recent call last):
File "/home/seth/Downloads/cpython-2.7/Lib/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/home/seth/Downloads/cpython-2.7/Lib/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/seth/Downloads/cpython-2.7/Lib/threading.py", line 6, in <module>
import thread
ImportError: No module named thread

但是如果我使用你的选项:

./configure --prefix=/home/seth/tools/python-${x}-nothread --enable-shared --enable-unicode --without-threads

然后似乎启用了线程。

似乎如果您使用 --enable-shared 进行编译,线程似乎会被打开。我不确定这是配置错误还是设计使然。

关于python - 如何构建没有线程的 python 和/或如何检测 python 是否是用线程构建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33860866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com