многопроцессорный менеджер python - PullRequest
3 голосов
/ 24 июня 2009

Моя проблема:

У меня есть 3 процесса, которые хотели бы поделиться конфигурацией, загруженной из одного класса, и несколько очередей. Я хотел бы порождать другой процесс как multiprocessing.manager для обмена этой информацией.

Как я могу это сделать? Может ли кто-нибудь купить пример кода, избегая использования глобальных переменных и используя класс диспетчера многопроцессорности?

Документы Python не были так полезны: - (

1 Ответ

3 голосов
/ 24 июня 2009

Я нашел этот конкретный раздел в многопроцессорной документации Python полезным. Следующая программа:

from multiprocessing import Process, Queue, current_process
import time

def f(q):
    name = current_process().name
    config = q.get()
    print "%s got config: %s" % (name, config)
    print "%s beginning processing at %s" % (name, time.asctime())
    time.sleep(5)
    print "%s completing processing at %s" % (name, time.asctime())

if __name__ == '__main__':
    q = Queue()
    processes = []
    cfg = { 'my' : 'config', 'data' : 'here' }
    for i in range(3):
        p = Process(target=f, args=(q,))
        processes.append(p)
        p.start()
        q.put(cfg)

    for p in processes:
        p.join()

демонстрирует основной скрипт (который является «диспетчером многопроцессорности» в вашем вопросе), создающий 3 процесса и отправляющий каждому из них конфигурацию (показанную здесь в виде словаря).

Каждый процесс читает конфигурацию, выполняет ее обработку (здесь, просто спят в течение 5 секунд), а затем завершается. Результат выполнения этого скрипта:

Process-1 got config: {'my': 'config', 'data': 'here'}
Process-1 beginning processing at Tue Jun 23 23:34:23 2009
Process-2 got config: {'my': 'config', 'data': 'here'}
Process-2 beginning processing at Tue Jun 23 23:34:23 2009
Process-3 got config: {'my': 'config', 'data': 'here'}
Process-3 beginning processing at Tue Jun 23 23:34:23 2009
Process-1 completing processing at Tue Jun 23 23:34:28 2009
Process-2 completing processing at Tue Jun 23 23:34:28 2009
Process-3 completing processing at Tue Jun 23 23:34:28 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...