【发布时间】:2011-02-14 02:57:03
【问题描述】:
是否有理由使用 numpy 的 memmap 打开设备文件(而不是常规文件)不起作用?
self.surface = np.memmap('/dev/fb1', dtype=np.uint16, mode='r+', shape=(320,240))
我正在使用一个自定义内核模块,该模块添加了一个帧缓冲设备,它可以与 python 的常规 mmap 模块配合使用。但是使用 numpy 似乎会在访问文件系统或其他东西时挂起内核的互斥锁(我真的不确定到底发生了什么)。
我的问题是,这是 numpy 的 memmap 无法处理的问题,我应该采取不同的方式吗?
我在unix stackexchange 上问了另一个问题,但我觉得这是两个不同的问题,所以我都发布了。
显然这是在 linux 上(带有自定义内核模块的 kubuntu 特立独行)
更新:
好吧,事实证明我可以很好地创建 memmap。问题似乎是,当我关闭进程而不专门关闭 memmap 对象时,它只会挂在内核中的互斥体上。
我不知道这个问题是否与 numpy 或我的内核模块或其他地方有关。
【问题讨论】:
-
老实说,这可能是 numpy-discussion 上最好的问题。 mail.scipy.org/mailman/listinfo/numpy-discussion 大多数 numpy 开发人员通常不检查 SO。 (我知道的唯一例外是 David Cournapeau……)无论如何,祝你好运!
-
您更可能遇到的问题是 python mmap 问题,因为 python mmaps 处理 numpy memmaps 的所有内存映射和文件关闭。
-
奇怪的是python的mmap工作正常。这个我还没想通。
标签: python linux numpy device-driver mmap