2009-06-23 3 views
3

Моей проблема:питона менеджер многопроцессорной

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

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

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

+0

Python документов, как правило, не являются полезным :-D – johndodo

ответ

3

Я нашел this определенного раздел в многопроцессорных документации 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 
+0

да, но я хотел бы способ избежать прохождений глобального ВАРА – DrFalk3n

+0

Я также хотел бы использовать multiprocessing.manager класс – DrFalk3n

+1

Извините, где проходят глобальные вары? –

 Смежные вопросы

  • Нет связанных вопросов^_^