相关疑难解决方法(0)

NumPy和memmap:[Errno 24]打开的文件过多

我正在使用大矩阵,所以我使用的是NumPy的memmap.但是,我收到一个错误,因为显然memmap使用的文件描述符没有被关闭.

import numpy
import tempfile

counter = 0
while True:
    temp_fd, temporary_filename = tempfile.mkstemp(suffix='.memmap')
    map = numpy.memmap(temporary_filename, dtype=float, mode="w+", shape=1000)
    counter += 1
    print counter
    map.close()
    os.remove(temporary_filename)
Run Code Online (Sandbox Code Playgroud)

根据我的理解,当调用close()方法时,memmap文件将被关闭.但是,上面的代码不能永远循环,因为它最终抛出" [Errno 24]太多打开文件 "错误:

    1016
    1017
    1018
    1019
    Traceback (most recent call last):
      File "./memmap_loop.py", line 11, in <module>
      File "/usr/lib/python2.5/site-packages/numpy/core/memmap.py", line 226, in __new__
    EnvironmentError: [Errno 24] Too many open files
    Error in sys.excepthook:
    Traceback (most recent call last):
      File "/usr/lib/python2.5/site-packages/apport_python_hook.py", line 38, in apport_excepthook
    ImportError: No module named packaging_impl

    Original exception …
Run Code Online (Sandbox Code Playgroud)

python memory-management numpy

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

Numpy追加:自动投射错误维度的数组

没有if子句有没有办法做到以下几点?

我正在使用pupynere读取一组netcdf文件,并希望构建一个带有numpy附加的数组.有时输入数据是多维的(见下面的变量"a"),有时是一维("b"),但第一维中的元素数总是相同的(下例中的"9").

> import numpy as np
> a = np.arange(27).reshape(3,9)
> b = np.arange(9)
> a.shape
(3, 9)
> b.shape
(9,)
Run Code Online (Sandbox Code Playgroud)

这按预期工作:

> np.append(a,a, axis=0)
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8],
   [ 9, 10, 11, 12, 13, 14, 15, 16, 17],
   [18, 19, 20, 21, 22, 23, 24, 25, 26],
   [ 0,  1,  2,  3,  4,  5,  6,  7,  8],
   [ 9, 10, 11, 12, 13, 14, 15, 16, 17],
   [18, 19, 20, 21, 22, …
Run Code Online (Sandbox Code Playgroud)

python performance numpy list append

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

标签 统计

numpy ×2

python ×2

append ×1

list ×1

memory-management ×1

performance ×1