首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cythonize ray actor类

Cythonize ray actor类
EN

Stack Overflow用户
提问于 2021-02-02 22:48:28
回答 1查看 111关注 0票数 0

我正在使用Ray库,然后我想对我的包进行Cythonize。而如何适配常规远程函数的there is a reference

代码语言:javascript
复制
some_cython_func = ray.remote(some_cython_module.some_cython_func)

不清楚如何处理Ray Actor (类级别的装饰器)

代码语言:javascript
复制
@ray.remote
class MyService:
    def __init__(self):
        pass
    def run(self):
        ...
    def helper(self):
        ...

在被Cython化后,这段代码会产生这样的错误

代码语言:javascript
复制
  File "/Users/user/anaconda3/envs/ray-test/lib/python3.7/site-packages/ray/actor.py", line 538, in _remote
    meta.method_meta.methods.keys())
  File "/Users/user/anaconda3/envs/ray-test/lib/python3.7/site-packages/ray/function_manager.py", line 358, in export_actor_class
    "class": pickle.dumps(Class),
  File "/Users/user/anaconda3/envs/ray-test/lib/python3.7/site-packages/ray/cloudpickle/cloudpickle_fast.py", line 70, in dumps
    cp.dump(obj)
  File "/Users/user/anaconda3/envs/ray-test/lib/python3.7/site-packages/ray/cloudpickle/cloudpickle_fast.py", line 656, in dump
    return Pickler.dump(self, obj)
_pickle.PicklingError: Can't pickle <cyfunction MyService.__init__ at 0x7fc230367c80>: it's not the same object as app.my_service.__init__

如何重写/调整现有的工作光线代码以与Cython一起工作?

Python 3.7.9 / ray==0.8.6

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-03 17:07:47

是的,这似乎是一个简单的解决方案,因为

代码语言:javascript
复制
MyService = ray.remote(_MyService)

工作正常,没有问题。

Ref to the Ray source code

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66012058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档