Задачи будут интерактивные с обращением к bd и вычислениями.
Провел небольшие тесты, в которых сначала тестировал пачку потоков параллельно выполняющих вот эту функцию:
def test():
for i in xrange(10000):
if 1<rnd.randint(1,100)<50:
math.exp(rnd.randint(1, 700))
else:
math.exp(rnd.randint(-700, -1))
Вот результаты:
INFO:test1:Result for 100 threads:>> 13.3729000092s
INFO:test1:Result for 100 process:>> 7.26567387581s
INFO:test1:Result for 100 tasks in 1 process:>> 12.6496989727s
INFO:test1:Result for 200 threads:>> 26.8068709373s
INFO:test1:Result for 200 process:>> 13.8837189674s
INFO:test1:Result for 200 tasks in 1 process:>> 24.7985720634s
INFO:test1:Result for 300 threads:>> 40.9965510368s
INFO:test1:Result for 300 process:>> 20.5542001724s
INFO:test1:Result for 300 tasks in 1 process:>> 37.2940359116s
INFO:test1:Result for 400 threads:>> 52.8284330368s
INFO:test1:Result for 400 process:>> 27.4708259106s
INFO:test1:Result for 400 tasks in 1 process:>> 49.3902859688s
INFO:test1:Result for 500 threads:>> 66.4858000278s
INFO:test1:Result for 500 process:>> 34.7022809982s
INFO:test1:Result for 500 tasks in 1 process:>> 63.8571689129s
INFO:test1:Result for 600 threads:>> 81.4805150032s
INFO:test1:Result for 600 process:>> 41.375150919s
INFO:test1:Result for 600 tasks in 1 process:>> 73.8992960453s
INFO:test1:Result for 700 threads:>> 93.8431408405s
INFO:test1:Result for 700 process:>> 48.697218895s
INFO:test1:Result for 700 tasks in 1 process:>> 86.1682038307s
INFO:test1:Result for 800 threads:>> 107.462379217s
INFO:test1:Result for 800 process:>> 58.9401319027s
INFO:test1:Result for 800 tasks in 1 process:>> 97.9579291344s
INFO:test1:Result for 900 threads:>> 120.639883041s
INFO:test1:Result for 900 process:>> 62.7911670208s
INFO:test1:Result for 900 tasks in 1 process:>> 111.479810953s
INFO:test1:Result for 1000 threads:>> 134.574063063s
INFO:test1:Result for 1000 process:>> 69.4446690083s
INFO:test1:Result for 1000 tasks in 1 process:>> 127.043555975s
Мне очень порадовало, что процессы вдвое(!!!!) быстрее многопоточного и последовательно выполняющихся задач.
Теперь сами вопросы:
В чем подвох процессов?(заметил сильную потерю отзывчивости при генерации свыше 500 процессов)
Почему потоки вдвое медленнее?
(Думаю будут еще вопросы)