gpt4 book ai didi

python - python线程运行中64兆 block 的来源是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:22 25 4
gpt4 key购买 nike

我发现在 linux 64 位系统上,每次创建 python 线程时,都会提供一个 64 兆字节的匿名 block 。

00007f4da6371000   8192K rw---    [ anon ]
00007f4da6b72000 8192K rw--- [ anon ]
00007f4d64021000 65404K ----- [ anon ]
00007f4d6c021000 65404K ----- [ anon ]
00007f4d70021000 65404K ----- [ anon ]
00007f4d74021000 65404K ----- [ anon ]
00007f4d78021000 65404K ----- [ anon ]
00007f4d7c021000 65404K ----- [ anon ]
00007f4d80021000 65404K ----- [ anon ]
00007f4d84021000 65404K ----- [ anon ]
00007f4d88021000 65404K ----- [ anon ]
00007f4d90021000 65404K ----- [ anon ]
00007f4d94021000 65404K ----- [ anon ]
00007f4d98021000 65404K ----- [ anon ]
00007f4d9c021000 65404K ----- [ anon ]
00007f4da0021000 65404K ----- [ anon ]
total 1076628K

通过这个小案例获得

>>> import threading
>>> class A(threading.Thread):
... def run(self):
... while True:
... pass
...
>>> A().start()
>>> A().start()
>>> A().start()
>>> A().start()
>>> A().start()
>>> A().start()
>>> A().start()
>>> A().start()
>>> A().start()
>>> A().start()
>>> A().start()
>>> A().start()
>>> A().start()

我首先怀疑是线程堆栈和线程本地存储,但我找不到任何需要 65 兆字节的地方。事实上,所有检查(例如 threading.stack_size、thread_pthread.c 内容、ulimit -a)指向的数量都比这小得多。谁决定这个数量并创建这个 VM block ?

最佳答案

64MB 的地址空间是为堆栈保留的。 64 位进程中的地址空间实际上是免费的,因此没有理由保留更少的空间。 (这是对 32 位系统的重大改进,在 32 位系统中您必须做出痛苦的权衡。)

不要误以为这是物理内存。这是一个虚拟映射。

关于python - python线程运行中64兆 block 的来源是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26754636/

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