优化策略
- 分块处理:将大数组分成小块进行运算,减少一次性占用的内存。
- 就地运算:使用
out
参数进行就地运算,避免创建新的数组占用额外内存。
- 及时释放内存:使用
del
关键字及时删除不再使用的数组,让Python的垃圾回收机制回收内存。
代码示例
import numpy as np
# 假设我们有两个大型矩阵 A 和 B
# 这里使用较小的矩阵模拟大型矩阵的情况
A = np.random.rand(1000, 1000)
B = np.random.rand(1000, 1000)
# 分块处理矩阵乘法
block_size = 100
result = np.zeros((A.shape[0], B.shape[1]))
for i in range(0, A.shape[0], block_size):
for j in range(0, B.shape[1], block_size):
sub_A = A[i:i + block_size, :]
sub_B = B[:, j:j + block_size]
sub_result = np.dot(sub_A, sub_B)
result[i:i + block_size, j:j + block_size] = sub_result
# 就地逐元素运算示例
C = np.random.rand(1000, 1000)
D = np.random.rand(1000, 1000)
np.add(C, D, out=C) # 就地加法,结果存储在 C 中,不额外占用内存
# 及时释放内存示例
del A, B, C, D # 删除不再使用的数组,让垃圾回收机制回收内存