У меня очень простое приложение с вложенным циклом for, и это может занять от нескольких минут до нескольких часов в зависимости от объема данных.python многопроцессорный пример itertools multple lists
Я начал работу с многопроцессорной библиотеки lib в python. Я попытался реализовать его в самой базовой форме, и даже несмотря на то, что мой код работает, прирост производительности отсутствует. Полагаю, что я неправильно его реализую и/или дизайн моего кода крайне ошибочен.
Мой код довольно прямо вперед:
import csv
import multiprocessing
somedata1 = open('data1.csv', 'r')
SD_data = csv.reader(data1,delimiter=',')
data1 = []
**import lots of CSV data***
def crunchnumbers():
for i, vald1 in enumerate(data1):
for i, vald2 in enumerate(data2):
for i, vald3 in enumerate(data3):
for i, vald4 in enumerate(data3):
for i, vald5 in enumerate(data3):
sol = #add values
print d_solution
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=4)
pool.apply(crunchnumbers)
Как я могу сделать это с многопроцессорной питона? (каким-то образом раскалываясь на куски?), или это лучшая работа для кувшина? Основываясь на предложениях по SO, я потратил несколько дней на использование Jug, но количество итераций в моих вложенных for-loops легко попадает в десятки миллионов (и более) очень быстрых транзакций, поэтому автор рекомендует против этого.
Вы не дают достаточно информации: какова зависимость «некоторых критериев»? зависит ли это от одного из «владов»? i? и то и другое ? все ? У меня была эта информация, мы могли бы создать рекурсивную функцию, которая агрегирует промежуточные результаты и рекурсивно вызывается с «отдыхом» – alfasin
@alfasin. Я предоставил условную логику. Я буду исследовать ваше предложение. спасибо – nodoze