2

多かれ少なかれ次のように見えるマルチプロセス設定があります。

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() から変更できるようにすることです。これを行う唯一の方法は、ワーカーごとに個別のキューを作成することですか、それとももっと良い方法がありますか? マルチプロセスを使用することで継続的に制限に直面しているように感じ、もう何ができるのかわかりません。

4

1 に答える 1

1

あなたは次のことができます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)
于 2012-07-24T01:27:31.797 に答える