产生巨大 numpy 的内存问题(被信号 9 中断:SIGKILL)
memory issue creating huge numpy (interrupted by signal 9: SIGKILL)
我有一个巨大的 csv,我必须为特定列中的相同参数创建一个 numpy 数组(类型 ara 大约 10)但是我的列表有问题:它太大而且 python 下降:
def mem():
file = pd.read_csv(file_csv)
x = []
y = []
path_prec = 0
for index, row in file.iterrows():
if path_prec == 0:
path_prec = row[0]
if path_prec!= row[0]:
X = np.stack(x, axis=0)
Y = np.stack(y, axis=0)
#save X and Y
x = []
y = []
path_prec = row[0]
#do some stuff and create a list
top = int(row[2])
bottom = int(row[3])
left = int(row[4])
right = int(row[5])
patch = image[top:bottom, left:right]
patch_gt = gt[top:bottom, left:right]
x.append(patch)
y.append(patch_gt)
我如何管理如此庞大的数据?带发电机?怎么样?
编辑:
这个巨大的 csv 包含在 fyle 系统中查找数据的信息
您可以创建 NumPy 的 memmap
对象。
根据其文档,这将:
Create a memory-map to an array stored in a binary file on disk.
Memory-mapped files are used for accessing small segments of large files on disk, without reading the entire file into memory.
您可能希望手动解析 CSV 以迭代填充 memmap
,例如使用 chuncksize
选项。有关如何将 chunksize
用于类似目的的一些代码,请参阅:
快速天真的解决方案:每个路径有一个以上的 numpy 数组(因为我要做的并不重要,所以解决方案是最简单的
我有一个巨大的 csv,我必须为特定列中的相同参数创建一个 numpy 数组(类型 ara 大约 10)但是我的列表有问题:它太大而且 python 下降:
def mem():
file = pd.read_csv(file_csv)
x = []
y = []
path_prec = 0
for index, row in file.iterrows():
if path_prec == 0:
path_prec = row[0]
if path_prec!= row[0]:
X = np.stack(x, axis=0)
Y = np.stack(y, axis=0)
#save X and Y
x = []
y = []
path_prec = row[0]
#do some stuff and create a list
top = int(row[2])
bottom = int(row[3])
left = int(row[4])
right = int(row[5])
patch = image[top:bottom, left:right]
patch_gt = gt[top:bottom, left:right]
x.append(patch)
y.append(patch_gt)
我如何管理如此庞大的数据?带发电机?怎么样?
编辑: 这个巨大的 csv 包含在 fyle 系统中查找数据的信息
您可以创建 NumPy 的 memmap
对象。
根据其文档,这将:
Create a memory-map to an array stored in a binary file on disk.
Memory-mapped files are used for accessing small segments of large files on disk, without reading the entire file into memory.
您可能希望手动解析 CSV 以迭代填充 memmap
,例如使用 chuncksize
选项。有关如何将 chunksize
用于类似目的的一些代码,请参阅:
快速天真的解决方案:每个路径有一个以上的 numpy 数组(因为我要做的并不重要,所以解决方案是最简单的