帮助如何挑选一个ufunc?

时间:2011-06-17 17:55:05

标签: python numpy mpi pickle

我正在尝试使用MPI向其他python进程广播模块。当然,模块本身不是pickleable,但__dict__是。目前,我正在挑选__dict__并在接收过程中创建一个新模块。这与一些简单的自定义模块完美配合。然而,当我尝试用NumPy做这件事时,有一件事我不能轻易腌制:ufunc

我已经阅读过这个帖子,建议挑选__name__的{​​{1}}和__module__,但似乎他们依赖于在重建之前完全构建和存在numpy。我需要避免在接收过程中一起使用ufunc语句,所以我很好奇所提到的import语句是否适用于没有getattr(numpy,name) s的模块包括在内。

另外,我在NumPy文档中的ufunc上看不到__module__属性: http://docs.scipy.org/doc/numpy/reference/ufuncs.html

请提供任何帮助或建议?

编辑:对不起,忘了包含上面提到的帖子。 http://mail.scipy.org/pipermail/numpy-discussion/2007-January/025778.html

1 个答案:

答案 0 :(得分:3)

在Python中挑选一个函数只会序列化它的名称及其来自的模块。它不会通过线路传输代码,因此在取消连接时,您需要提供与酸洗时相同的库。在unpickling上,Python只是导入有问题的模块,并通过getattr抓取项目。 (这不仅限于Numpy,但一般适用于酸洗。)

Ufuncs不干净,这是一个疣。你的选择主要是腌制ufunc的__name__(也许是__class__),然后手动重建它们。 (它们实际上不是Python函数,并且没有__module__属性。)