Python 为什么concurrent.futures会增加VM内存?

Python 为什么concurrent.futures会增加VM内存?,python,multithreading,concurrent.futures,psutil,Python,Multithreading,Concurrent.futures,Psutil,我发现,当我使用Python的concurrent.futures.ThreadPoolExecutor时,vms内存使用量(正如psutil报告的那样)会显著增加 In [1]: import psutil In [2]: psutil.Process().memory_info().vms / 1e6 Out[2]: 360.636416 In [3]: from concurrent.futures import ThreadPoolExecutor In [4]: e = Thre

我发现,当我使用Python的
concurrent.futures.ThreadPoolExecutor
时,vms内存使用量(正如psutil报告的那样)会显著增加

In [1]: import psutil

In [2]: psutil.Process().memory_info().vms / 1e6
Out[2]: 360.636416

In [3]: from concurrent.futures import ThreadPoolExecutor

In [4]: e = ThreadPoolExecutor(20)

In [5]: psutil.Process().memory_info().vms / 1e6
Out[5]: 363.15136

In [6]: futures = e.map(lambda x: x + 1, range(100))

In [7]: psutil.Process().memory_info().vms / 1e6
Out[7]: 1873.580032

In [8]: e.shutdown()

In [9]: psutil.Process().memory_info().vms / 1e6
Out[9]: 1722.51136

这似乎与线程的数量成一定比例。

您可能会遇到这种情况(假设您在Linux上):

这可能会使虚拟内存的大小膨胀,即使RSS没有增加多少


(顺便提一下,VM在其他情况下可能会产生误导,例如CUDA,其中驱动程序扩展进程的虚拟内存空间,以便与系统中的所有CUDA设备创建统一的地址空间。)

注意,其他内存属性,如
rss
,返回的值更适中