pandas 0.13系统错误:无法设置线程关联掩码

时间:2014-05-08 09:01:46

标签: python-2.7 numpy pandas canopy numexpr

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

我在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的pandas系列中运行以下内容时出现了不一致的错误:

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.

我在其他计算机上复制了此错误,并且测试用例来自单元测试失败(带有上述错误),该错误在多台计算机和服务器上复制。这已经从熊猫0.12升级到熊猫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.

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这是与此issue中描述的非常类似的问题,以及链接的issue

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

  • 尝试将numexpr升级到2.4(当前版本),或降级为2.1
  • 尝试通过冠层使用numpy 1.8.1
  • 尝试从发布的二进制文件here安装numpy / numexpr;我不确切知道如何运作,所以不确定这是否可行
  • 卸载numexpr

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