2013-07-13 2 views
0

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

pats = [] 
for chunk in code_counter(patients, codes): 
    pats.append(chunk) 

def code_counter(patients, codes): 
    for key, group in itertools.groupby(patients, key=operator.itemgetter('ID')): 
     group_codes = [item['CODE'] for item in group] 
     yield [group_codes.count(code) for code in codes] 
+0

Выполняется ли заказ предметов в 'pats'? – unutbu

+0

да! Знаете ли вы, как это сделать? – user2578185

+1

Что такое 'пациенты' и где вы его получите? для того, чтобы это сработало, он должен быть отсортирован (http://docs.python.org/3/library/itertools#itertools.groupby) на 'ID'. Это? В противном случае было бы лучше просто использовать ['Counter'] (http://docs.python.org/3/library/collections#collections.Counter). Трубопроводы всех данных на подпроцессы, чтобы получить обратный отсчет, вероятно, приведут к дополнительным накладным расходам, а затем speedgain. – mata

ответ

1

Я думаю, ваша проблема заключается в использовании выхода. Я думаю, вы не можете предоставить данные из разных процессов. Я понял, что вы используете доход, потому что вы не можете загрузить данные «inline», которые могут привести к перегрузке.

может быть, вы можете посмотреть на очереди многопроцессорной http://docs.python.org/2/library/multiprocessing.html#exchanging-objects-between-processes

я действительно не получить то, что вы пытаетесь сделать с вашим кодом, так что я не могу поставить точный excample.

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