gpt4 book ai didi

python - 使用Python并行操作对象

转载 作者:太空宇宙 更新时间:2023-11-03 21:20:26 25 4
gpt4 key购买 nike

我有一个对象列表ObjList,其中所有对象都是同一类的实例。这个类有一个方法 run ,我想为 ObjList 中的对象并行执行该方法。

然后计算结果存储在对象内。如果没有并行化,我目前会做类似的事情

for obj in self.ObjList:
obj.Run()

此编码是包含并处理这些对象的“列表”的类的类方法的一部分。之后,我希望能够读取 obj.Run 执行的计算结果。我尝试了 multiprocessing.Pool 方法,但遇到了 pickle 问题。我还尝试使用 multiprocessing.Process 但遇到了问题,结果存储在对象的副本中,然后该副本被丢弃。我没有设法返回被操纵的对象。

是否有一种简单的方法可以将相同的类方法应用于作为同一类实例的对象列表(这相当复杂并且本身使用多个对象)?

编辑:我尝试了this question的答案中建议的方法。但后来我总是收到以下形式的错误

AttributeError: Can't pickle local object 'someclass.<locals>.<lambda>'

最佳答案

我不确定我将提供的是“简单的方法”,但看看这是否适合您。

我建议使用第三方组件(例如 numba )将您的代码转换为编译后的机器代码,以便在需要时“及时”利用某些并行架构的强大功能,例如 NVIDIA GPUs或者你自己的多核CPU。这样您就不需要处理并行优化的麻烦。

由于每个代码/应用程序都有自己的逻辑和流程,我无法指定代码的确切转换,但在我看来,这是一条很好的路线,可以遵循,(希望)不需要太多更改您的代码。

关于python - 使用Python并行操作对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54311418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com