1

这是我的第一个堆栈溢出问题,所以请原谅我对论坛的任何无知。

我在 win 7 机器上使用来自 Enthought Canopy 1.3.0.1715 的 python 2.7.6 64 位和 pandas 0.13.1-1。我有 numpy 1.8.0-1 和 numexpr 2.2.2-2。

我在从 hdf 加载的 10,000 个 numpy.float64 的熊猫系列上运行以下内容时出现不一致的错误行为:

import python
s = pandas.read_hdf(r'C:\test\test.h5', 'test')
s/2.

这给了我不一致的行为,它有时会起作用,有时会抛出:

OMP: Error #134: Cannot set thread affinity mask.
OMP: System error #87: The parameter is incorrect.

我已经在其他机器上复制了这个错误,并且测试用例源自单元测试失败(带有上述错误),它在多台机器和服务器上被复制。这是从 pandas 0.12 升级到 pandas 0.13 的。

以下始终运行没有错误:

import python
s = pandas.read_hdf(r'C:\test\test.h5', 'test')
s.apply(lambda x: x/2.)

和,

import python
s = pandas.read_hdf(r'C:\test\test.h5', 'test')
pandas.computation.expressions.set_use_numexpr(False)
s/2.

谢谢您的帮助。

4

1 回答 1

1

这是一个与本期和链接问题中描述的非常相似的问题

似乎只有canopy遇到这些问题。我认为这与树冠 numpy MKL 构建有关,但这是一个猜测,因为我无法重现这一点。所以这里有一些解决方法:

  • 尝试升级numexpr到 2.4(当前版本),或降级到2.1
  • 尝试numpy 1.8.1通过树冠使用
  • 尝试从此处发布的二进制文件安装 numpy/numexpr ;我不知道天篷是如何工作的,所以不确定这是否可能
  • 卸载numexpr

您还可以numexpr通过禁用支持pandas.computation.expressions.set_use_numexpr(False)。请注意,这numexpr是通过 读取/使用 HDF5 文件所必需的PyTables。但是,禁用的表达式numexpr应该只是为“计算”(而不是 HDF 访问)禁用它。

于 2014-05-08T12:58:17.383 回答