ray在Cython中的错误:远程装饰器必须应用于函数或类



我用Cython应用ray。它显示了一个错误:TypeError: @ray。远程装饰器必须应用于函数或类。

如何解决这个问题?谢谢。

  1. setup . py:
from distutils.core import setup, Extension
from Cython.Build import cythonize
import numpy
setup(
ext_modules=cythonize("ray_cython.pyx"),
include_dirs=[numpy.get_include()]
)
setup(
ext_modules=[
Extension("ray_cython", ["ray_cython.c"],
include_dirs=[numpy.get_include()]),
],
)
# compile by  python setup.py build_ext --inplace
# Then run compare.py
  1. ray_cython。pyx文件:
from numpy import linalg as LA
import time
#Import package
import ray
cimport numpy as np
np.import_array()
DTYPE = np.int
ctypedef np.int_t DTYPE_t

@ray.remote
def myfunction():
...

https://docs.ray.io/en/latest/ray-core/advanced.html#cython-code-in-ray

您必须在任何*的顶部包含以下两行。pyx文件:

#!python
# cython: embedsignature=True, binding=True

不能在*中修饰Cython函数。pyx文件(有一些方法可以解决这个问题,但是在Cython和Python之间创建了一个泄漏的抽象,通常很难支持)。相反,您应该在Python代码中使用以下代码:

some_cython_func = ray.remote(some_cython_module.some_cython_func)

最新更新