#поиск d
brk = 0
for d in xrange(2, 10):
combi_n_list = combi_n(len(matrix_h), d)
permit_combi_n_list = permit_combi_n(d)
for i in xrange(len(combi_n_list)):
for j in xrange(len(permit_combi_n_list)):
if check_vector(mult_summ (combi_n_list[i], permit_combi_n_list[j])) == 1:
print "<h1>Min code dist. = "+str(d)+"</h1>"
rezult_string = copy.deepcopy(combi_n_list[i])
rezult_coeff = copy.deepcopy(permit_combi_n_list[j])
brk = 1
break
if brk == 1:
break
if brk == 1:
break
заходим в основной цикл for d in xrange(2, 10):
тут генерим два множества combi_n_list и permit_combi_n_list. в зависимости от параметров множества могут быть довольно блольшие. до несколько тысяч элементов, где элементы массивы
итак, сгенерировали множества. далее нужно распределить вычисления.
создать N потоков. где N - количество элементов в списке combi_n_list (те потоков может быть очень много, 2000-3000, питон позволит сделать столько? и есть ли смысл)
далее в каждый поток закидываем i-й элемент combi_n_list (т.е. по одному элементу на поток, все разные), закидываем в каждый массив permit_combi_n_list.
итак данные в каждый поток заряжены, начинаем в каждом потоке цикл проверки, вот этот:
for j in xrange(len(permit_combi_n_list)):
if check_vector(mult_summ (combi_n_list[i], permit_combi_n_list[j])) == 1:
print "<h1>Min code dist. = "+str(d)+"</h1>"
rezult_string = copy.deepcopy(combi_n_list[i])
rezult_coeff = copy.deepcopy(permit_combi_n_list[j])
brk = 1
break
и так, вот наши потоки считают, считают и если хотя бы в одном потоке выполнилось вот это условие if check_vector(mult_summ (combi_n_list, permit_combi_n_list)) == 1:
то записываем результат из потока который выполнился после условия, вот этот
print “<h1>Min code dist. = ”+str(d)+“</h1>”
rezult_string = copy.deepcopy(combi_n_list)
rezult_coeff = copy.deepcopy(permit_combi_n_list)
и убиваем все потоко и новые не запускаем, вообще убиваем основной цикл, а результаты нужно сохранить в переменных….
плз помогите реализовать…