python - Python:并行化嵌套的 for 循环
问题描述
我在尝试使用该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))
如果不出意外,我想并行化内部循环,但我不清楚如何做到这一点。这里的大多数示例都侧重于使用 的map
函数multiprocessing
,但我并不真正关心 的返回值setattr
,我只是希望这些调用并行执行。
解决方案
您可能无法使用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()
推荐阅读
- git - 我怎样才能忽略除 *.cpp 文件之外的所有内容
- c# - 如何在 ASP.NET Core MVC 中的 ViewComponent 中传递超过 4 个参数
- amazon-ec2 - 无法从 AWS ELB 访问 AWS 实例
- html - 导航下拉问题
- java - 如何从在 dockerized Tomee 服务器上运行的应用程序成功连接到 Dockerized DB2 数据库/服务器 - 两个容器都使用 jdk10?
- javascript - 使用 Jest,在 vue.js 中对单个文件组件进行单元测试时,如何监视扩展组件的方法
- angular - 订阅返回未定义
- java - 如何使用 JASIG SSO 同时验证两个客户端
- python - Python中意外返回的变量
- jquery - CSS:扩展一个从右到左显示文字