标签: numpy-memmap

我无法删除由 memmap 创建的文件

我无法删除文件创建numpy.memmap功能

class MyClass
 def __init__(self):    
  self.fp = np.memmap(filename, dtype='float32', mode='w+', shape=flushed_chunk_shape)
    ...
 def __del__(self):   
  del self.fp
  os.remove(filename)
Run Code Online (Sandbox Code Playgroud)

当我运行del myclass(MyClass 的实例)时,出现错误WindowsError: [Error 32] The process cannot access the file。如果我以非面向对象的方式使用memmap和删除文件,一切正常。所以我认为析构函数有麻烦。但为什么会发生这种情况呢?

python numpy numpy-memmap

4
推荐指数
1
解决办法
1763
查看次数

numpy.memmap 返回的内存不足,但有足够的可用内存

在 64 位 Windows 机器上的典型调用过程中numpy.memmap(),python 会引发以下错误:

OSError: [WinError 8] Not enough memory resources are available to process this command
Run Code Online (Sandbox Code Playgroud)

不同的 Windows 机器会用不同的文本引发相同的错误:

OSError: [WinError 8] Not enough storage is available to process this command.
Run Code Online (Sandbox Code Playgroud)

这是代码摘要:

with open(infile, 'rb') as f:
  ......
  array = numpy.memmap(f, dtype='uint8', mode='r', offset=offset, shape=arraysize).tolist()
Run Code Online (Sandbox Code Playgroud)

此时Python仅使用了50MB的内存。内存不足的原因是什么?

python numpy numpy-memmap

4
推荐指数
1
解决办法
2521
查看次数

使用 numpy 内存映射的 64 位系统中文件的最大大小是多少

我正在尝试处理一个大约 50 GB 的大文件。我正在尝试使用 numpy 内存映射访问该文件。我看到用于内存映射的文件大小有限制,32 位系统为 2GB。这是链接:https : //docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.memmap.html

我想知道使用 numpy 内存映射对文件大小是否有硬限制以获得良好的性能。

python numpy memory-mapped-files memory-mapping numpy-memmap

2
推荐指数
1
解决办法
1526
查看次数

numpy 内存映射上随机切片的效率

我有一个 20GB、100k x 100k 'float16' 2D 数组作为数据文件。我将其加载到内存中,如下所示:

\n\n
fp_read = np.memmap(filename, dtype='float16', mode='r', shape=(100000, 100000))\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我尝试从中读取切片。我需要采取的垂直切片实际上是随机的,但性能非常差,或者我做错了什么?

\n\n
\n\n

分析:

\n\n

我与其他形式的横截面切片进行了比较,尽管我不知道为什么应该这样,但它要好得多:

\n\n
%timeit fp_read[:,17000:17005]    # slice 5 consecutive cols\n1.64 \xc2\xb5s \xc2\xb1 16.4 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 1000000 loops each)\n\n%timeit fp_read[:,11000:11050:10]\n1.67 \xc2\xb5s \xc2\xb1 21 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 1000000 loops each)\n\n%timeit fp_read[:,5000:6000:200]\n1.66 \xc2\xb5s \xc2\xb1 27.3 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 1000000 loops each)\n\n%timeit …
Run Code Online (Sandbox Code Playgroud)

python numpy numpy-memmap

2
推荐指数
1
解决办法
1812
查看次数

将 numpy 数组转换为 memmap

我在内存中生成一些数据,我想将其转换为 numpy.memmap 以节省 RAM。我应该怎么办?我的数据位于:

    X_list_total_standardized=np.array(X_list_total_standardized)
Run Code Online (Sandbox Code Playgroud)

我知道我可以初始化一个空的 numpy.memmap:

X_list_total_standardized_memmap=np.memmap(self._prepared_data_location_npmemmap_X,dtype='float32',mode='w+')
Run Code Online (Sandbox Code Playgroud)

将 X_list_total_standardized 存储到内存映射中最方便的方法是什么?谢谢

PS:下面的命令可以吗?

    X_list_total_standardized_memmap[:]=X_list_total_standardized[:]
Run Code Online (Sandbox Code Playgroud)

python arrays numpy numpy-memmap

1
推荐指数
1
解决办法
2912
查看次数