多处理和多线程的可重复性

问题描述 投票:0回答:0

我的代码产生了几个进程和线程。 进程收集数据,当收集到足够的数据时,线程会进行一些训练。

代码看起来像这样

import threading
from torch import multiprocessing as mp

def train(flags):
    processes = []
    for i in range(np):
        p = ctx.Process(
            target=my_function, args=my_args)
        p.start()
        processes.append(p)

    threads = []
    for i in range(nt):
        thread = threading.Thread(
            target=my_other_function, args=(i,))
        thread.start()
        threads.append(thread)

数据采集和训练都有一些调用PyTorch和NumPy

random
.

如何确保确定性行为来重现我的结果?

我在 main 中设置所有随机种子,但结果永远不一样。我尝试了

fork
spawn
的产卵过程。

我正在考虑手动将生成器传递给线程和进程,但我不确定是否有更好的方法。

numpy pytorch python-multiprocessing python-multithreading random-seed
© www.soinside.com 2019 - 2024. All rights reserved.