繁体   English   中英

Python 中的并行化

[英]Parallelizing in Python

我有一些我想在 python 中并行做的事情。 以下 function:

def _train_users_locally(self):
        for i in self.users:
            self.users[i].train()

获取“用户”class 的一组实例来训练 pytorch 神经网络:

def train(self):
        self.current_model.train()
        optim = self.optim(self.current_model.parameters(), lr=self.lr)
        criterion = self.criterion()
        for epoch in range(self.epochs):
            loss_per_epoch = 0
            counter = 0
            for i, data in enumerate(self.dataloader):
                x, y = data
                fx = self.current_model(x.unsqueeze(1))
                loss = criterion(fx, y)
                optim.zero_grad()
                loss.backward(retain_graph=True)
                optim.step()
                loss_per_epoch += loss.item()
                print('\rEpoch {}\tBatch: {:.3f}, Loss: {:.3f}'.format(epoch+1, i, loss.item()), end="")
                counter += 1
            print('\nEpoch {}\t Average Loss: {:.3f}'.format(epoch+1, loss_per_epoch / counter))

output 什么都没有; 分配给 object 的 model 正在更新。 我希望每个用户 object 同时进行培训,但我无法终生弄清楚如何做到这一点,因为我能够找到的所有示例都涉及对列表元素的一些处理。

想出来了,谢谢高塔姆。

from threading import Thread

def _train_users_locally(self):
        threads = []
        for i in self.users:
            t = Thread(target=self.users[i].train)
            threads.append(t)
        for t in threads:
            t.start()
        for t in threads:
            t.join()

它似乎按预期工作; 但我不确定我是否会遗漏一些会意外弹出的可怕东西。

使用名为“线程”的模块

它将运行函数。 同时

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM