多处理:在单独的线程上执行新函数的每个n迭代其他线程上的每个迭代

发布于 2025-02-09 23:18:20 字数 999 浏览 1 评论 0原文

上下文

我有工人设置并在多线程的过程上运行,如下所示:

global_iteration = mp.Value('i', 0)

workers = [Worker(global_iteration) for _ in range(num_threads)]

for w in workers:
    w.daemon=True
    w.start()

[w.join() for w in workers]

每个工人将执行一些操作,然后递增global_iteration。为了清楚起见,工作类的定义如下:

import multiprocessing as mp

class Worker(mp.Process):
    def __init__(global_iteration):
        super(Worker, self).__init__()
        self.global_iteration = global_iteration

    def update_global_iteration():
        with self.global_iteration.get_lock():
            self.global_iteration+=1

    def run():
        ### Do something here ###
        self.update_global_iteration()

我的问题:

我想在每个n n global_iterations上在单独的线程上运行一个函数。我该怎么做?

为简单起见,功能可能是:

def print_global_iterations(global_iterations):
    print('Workers are currently on global iteration {}'.format(global_iterations))

Context

I have workers setup and running on a multi-threaded process running as follows:

global_iteration = mp.Value('i', 0)

workers = [Worker(global_iteration) for _ in range(num_threads)]

for w in workers:
    w.daemon=True
    w.start()

[w.join() for w in workers]

Each worker will perform some operation and then increment the global_iteration. For clarity, the worker class is defined as follows:

import multiprocessing as mp

class Worker(mp.Process):
    def __init__(global_iteration):
        super(Worker, self).__init__()
        self.global_iteration = global_iteration

    def update_global_iteration():
        with self.global_iteration.get_lock():
            self.global_iteration+=1

    def run():
        ### Do something here ###
        self.update_global_iteration()

My question:

I want to run a function on a separate thread every n global_iterations. How can I do this?

For simplicity the function could be something like:

def print_global_iterations(global_iterations):
    print('Workers are currently on global iteration {}'.format(global_iterations))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文