python在消耗内存时使用系统cpu时间

2024-04-18 18:14:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到当python(可能只是numpy?)正在占用内存,系统cpu时间变得重要。在

例如,当运行以下代码时(numpy多线程被禁用):

import numpy as np
a = np.random.rand(50, 50, 1000000)

大约88%的运行核心用于用户时间,12%用于系统时间。在

但是,运行以下代码时:

^{2}$

所有cpu时间都用于用户时间。在

我想了解:

(1)为什么会这样?在

(2)我是否需要配置我的代码以使用更少的内存?请注意,当我说剖析的时候,我不在乎记忆,而我唯一在乎的是walltime。我只是担心太多的系统时间会减慢我的程序。在


Tags: 记忆内存代码用户importnumpy核心系统
1条回答
网友
1楼 · 发布于 2024-04-18 18:14:31

测试代码:

N=10000000
M=10

# Method 1
a=[]
for i in range(N):
    a.append(np.random.rand(M,M))

# Method 2
a = np.random.rand(M,M,N)

# Method 3
for i in range(N):
    a = np.random.rand(M,M)

linuxtime命令的结果: Fig 1

还有:

^{pr2}$

结果表明,在方法1中,系统调用时间随着块大小的增加而减少,最终将达到与方法2相同的水平。同时,由于用户空间-时间开销的快速增长,系统调用的时间开销比例随着块大小的减小而减小。在

至于方法3,它忽略了分配大量内存的开销,导致系统调用的开销非常小,这在您的程序中基本上是不真实的(我知道它会做什么!)。在

相关问题 更多 >