Форум сайта python.su
Здравствуйте!
Написал маленькую прогу которая выполняет расчеты и в конце пишет результаты в эксель.
Встала проблема: при помощи модуля multiprocessing запускаю количество потоков равное количеству доступных ядер процессора. Однако 1 - 2 потока тормозятся и судя по выводу в процентах в консоль того на сколько каждый процесс выполнился, выполняются ровно столько же сколько выполнялись подавляющее большинство потоков до них(него). То есть имеем 8 ядер, 6 потоков выполнились, завершили свою работу, а два только начали выполняться. Пробовал уменьшить количеств потоков на два(8 ядер проца, 6 потоков), эффект тот же.В чем может быть проблема?
Спасибо!!!
Ключевой фрагмент:
StartTime = time.clock() Ticks = [] for line in open('ticks.txt'): Ticks.append(float(line)) worker_count = cpu_count() print ("worker_count",worker_count) print("worker_count-2", worker_count-1) Steps = (EndInaquality - StartInaquality)//(worker_count-1) IncrementStepValue = (EndInaquality - StartInaquality)//(worker_count-1) print("IncrementStepValue:",IncrementStepValue) tmpStartValueLWMA1 = StartValueLWMA1 tmpStartValueLWMA2 = StartValueLWMA2 tmpStartInaquality = StartInaquality tmpEndInaquality = tmpStartInaquality + IncrementStepValue num = 0 jobs = [] for i in range(worker_count-1): p = Process(target=Calculate, args=(num,StartTime,Stats,Ticks,Steps,tmpStartValueLWMA1,StartValueLWMA1, EndValueLWMA1,tmpStartValueLWMA2,StartValueLWMA2,EndValueLWMA2,tmpStartInaquality,tmpEndInaquality)) jobs.append(p) p.start() num += 1 tmpStartInaquality += IncrementStepValue print("tmpStartInaquality += IncrementStepValue:",tmpStartInaquality) if(tmpEndInaquality > EndInaquality): tmpEndInaquality = EndInaquality print("tmpEndInaquality = EndInaquality:",tmpEndInaquality) else: tmpEndInaquality += IncrementStepValue print("tmpEndInaquality += IncrementStepValue:",tmpEndInaquality) print (p) for w in jobs: w.join() print (w)
Офлайн
А в Calculate Что?
Офлайн
.
Отредактировано alhimik7 (Авг. 20, 2016 05:46:43)
Офлайн
Доброго времени суток !
Пытаюсь реализовать метод выделения огибающей широкополосного сигнала в питоне , метод разрабатывал в матлабе , теперь пытаюсь сделать тоже самое в питоне , питон совершенно не знаю , подскажите пожалуйста сайты или литературу в которой можно найти информацию .
Нужно ли ставить специализированный радиопакет или можно обойтись стандартными функциями ?
Офлайн
NikolayNemtsevДля обработки сигналов с большими объемами данных обычный питон будет слишком медленным. Не факт что нужен специальный пакет для радиосигналов, я кстати таких и не знаю. Обычно достаточно numpy scipy для работы с таблицами многие используют pandas, но он тяжеловат. В этих пакетах есть и signal processing.
или можно обойтись стандартными функциями ?
Отредактировано doza_and (Авг. 22, 2016 09:45:20)
Офлайн