Python:并行化嵌套for循环

2024-09-22 18:28:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试使用multiprocessing模块时有点不知所措。我有一个简单的嵌套循环,用于将属性从一个对象复制到另一个对象:

        if objects:
            rb_from = obj_act.rigid_body
            # copy settings
            for o in objects:
                rb_to = o.rigid_body
                if o == obj_act:
                    continue
                for attr in self._attrs:
                    setattr(rb_to, attr, getattr(rb_from, attr))

如果没有别的,我想并行化内部循环,但我不清楚如何做到这一点。这里的大多数示例侧重于使用multiprocessingmap函数,但我并不真正关心setattr的返回值,我只希望这些调用并行执行


Tags: to对象infromobjforifobjects
1条回答
网友
1楼 · 发布于 2024-09-22 18:28:33

使用multiprocessing可能无法实现您想要的目标。(或者,它可能相当复杂。)上下文之外的变量不会在进程之间共享。但它们是线之间的

您可以简单地使用threading并并行化复制执行

    def copy_attributes(self, obj_act, o): 
        rb_from = obj_act.rigid_body

        rb_to = o.rigid_body
        if o == obj_act:
            return
        for attr in self._attrs:
            setattr(rb_to, attr, getattr(rb_from, attr))

    ...

            for o in objects:
                threading.Thread(
                    target=self.copy_attributes, args=(obj_act, o)
                ).start()

相关问题 更多 >