Форум сайта python.su
вот кусок кода где счет происходит
#поиск 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 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
Офлайн
Потоки не ускорят вычисления. Смотреть нужно в сторону процессов.
Я когда-то распараллеливал вычисления - на 4-ядерном процессоре получил ускорение всего в 2.7 раза.
Офлайн
ну либо не потоки а процессы создавать…я не в курсе как это организовать, но сделать надо чтобы прога вычисляла все одновременно а не по очереди….иначе ждать результат несколько часа если не больше
Офлайн
плз кто сможет помочь, могу оплатить работу…
Офлайн
по простому - можно 10 раз одновременно запустить скрипт с разными параметрами, вот и будет “многопроцессорная” обработка
а вот пример “мултипроцессинга” питоном
Отредактировано (Сен. 28, 2011 11:08:02)
Офлайн
сделал так
#поиск d
def prcess (permit_combi_n_list, combi_n_list_i, d):
for j in xrange(len(permit_combi_n_list)):
if check_vector(mult_summ (combi_n_list_i, permit_combi_n_list[j])) == 1:
rezult_message = "<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
brk = 0
for d in xrange(2, 10):
from multiprocessing import Process
combi_n_list = combi_n(len(matrix_h), d)
permit_combi_n_list = permit_combi_n(d)
mass_prc = range(len(combi_n_list))
for i in xrange(len(combi_n_list)):
mass_prc[i] = Process(target=prcess, args=(permit_combi_n_list,combi_n_list[i], d,))
mass_prc[i].start()
for i in xrange(len(combi_n_list)):
mass_prc[i].join()
if brk == 1:
break
if brk == 1:
break
Офлайн