python - genfromtxt : how to disable caching

标签 python numpy

我已经确认 genfromtxt 函数(以及派生自它的函数)静默缓存它们正在本地目录中处理的远程文件,并在后续调用中使用本地副本而不检查它是否已更改.
通过查看源文件 npyio.py发生这种情况似乎是因为 DataSource在不传递相关参数的情况下创建处理请求的对象。 修改库源以禁用缓存当然很容易,但每次升级后我都必须重复。
还有其他解决办法吗? (除了每次都删除缓存目录)

最佳答案

我觉得这道题其实是由两部分组成的:

  1. 如果库的功能与要求的行为不完全匹配怎么办?

  2. 具体如何处理genfromtxt的缓存行为?

关于 1.,包装(可能通过注入(inject))比修补库更具弹性(除非修补是在上游完成的,在库的 repo 中)。

所以包装 genfromtxt 可以像这样完成:

def patched_gen_from_text(*args, **kwargs):
    # Do something regarding caching
    return numpy.genfromtxt(*args, **kwargs)

您甚至可以在不修改源代码的情况下将其作为 numpy.genfromtext 注入(inject)(我不推荐这样做):

import numpy 

numpy.genfromtxt = patched_gen_from_text

关于 2. 这实际上取决于您对远程文件系统的访问权限(例如,您可以在那里运行进程吗?您可以安装它吗?),以及速度和所需确定性之间的权衡。

例如,在一种极端情况下,您的补丁版本可能会无条件地删除本地文件(确定但缓慢)。或者,您可以请求远程文件的更新时间和长度,并查看它们与本地文件的对应关系。在另一个极端,您可以在另一台计算机上对 RPC 运行 md5 检查。

您可能想查看 filecmp对于不同的比较选项,以及某些情况下可能的实际构建 block 。

关于python - genfromtxt : how to disable caching,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30139451/

相关文章:

python - 从数组中移除异常值的技术

python - 将 100x9 广播到 100x9x1x1 numpy 数组以在 Caffe 中进行计算的正确方法

python - 用于文档目的的带有注释的 YAML 解析

Python 请求获取 TLSV1_ALERT_INTERNAL_ERROR

python - 更有效地到达最近的中心

python - 这是 Python/Numpy 的 bug 还是微妙的陷阱?

python - 从文本文件写入 CSV 文件

python - 如何在TF2.0中创建自定义渐变的keras图层?

python - 使用Python计算公交车站之间的时间

python - 如何在 numpy 中将列添加到矩阵