Skip to main content
 首页 » 编程设计

python之在python中更改多进程的局部变量

2025年05月04日7tintown

我有一个多进程设置,大致如下所示:

import multiprocessing 
 
class Worker(multiprocessing.Process): 
    def __init__(self, name): 
        self.name = name 
    def run(self): 
        while True: 
            #do something 
            print( self.name + " is working!") 
            #wait a few seconds 
 
def main(): 
    workers = [] 
    for a in ["A", "B", "C", "D"]: 
        w = Worker(a) 
        workers += [w] 
        w.start() 

我想做的是能够从 main() 更改 worker 的名字。为每个工作人员创建一个单独的队列是执行此操作的唯一方法,还是有更好的方法?我觉得我在使用多进程时不断遇到限制,而且我不确定我还能做什么。

请您参考如下方法:

你可以是一个Pipe :

import multiprocessing 
 
class Worker(multiprocessing.Process): 
    def __init__(self, name): 
        self.name = name 
        self.change_name_r, self.change_name_w = multiprocessing.Pipe(False) 
 
    def run(self): 
        while True: 
            #do something 
            if self.change_name_r.poll(): 
                self.name = self.change_name_r.recv() 
            print( self.name + " is working!") 
            #wait a few seconds 
 
    def change_name(self, new_name): 
        self.change_name_w.send(new_name)