Python Multiprocessing VS резьба для CPU Bound Work на Windows и LinuxPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python Multiprocessing VS резьба для CPU Bound Work на Windows и Linux

Сообщение Anonymous »

Поэтому я выбил некоторый тестовый код, чтобы увидеть, как многопроцессный модуль будет масштабироваться на работе CPU, по сравнению с потоками. На Linux я получаю повышение производительности, которое я ожидал: < /p>
linux (dual quad core xeon):
serialrun took 1192.319 ms
parallelrun took 346.727 ms
threadedrun took 2108.172 ms
< /code>
my Dual Core MacBook Pro показывает то же поведение: < /p>
osx (dual core macbook pro)
serialrun took 2026.995 ms
parallelrun took 1288.723 ms
threadedrun took 5314.822 ms
< /code>
Я затем пошел и попробовал на машине Windows и получил несколько разных результатов: < /p>
windows (i7 920):
serialrun took 1043.000 ms
parallelrun took 3237.000 ms
threadedrun took 2343.000 ms
< /code>
Почему, о, почему многопроцессный подход на Windows настолько медленнее? < /p>
Вот тестовый код: < /p>
#!/usr/bin/env python

import multiprocessing
import threading
import time

def print_timing(func):
def wrapper(*arg):
t1 = time.time()
res = func(*arg)
t2 = time.time()
print '%s took %0.3f ms' % (func.func_name, (t2-t1)*1000.0)
return res
return wrapper

def counter():
for i in xrange(1000000):
pass

@print_timing
def serialrun(x):
for i in xrange(x):
counter()

@print_timing
def parallelrun(x):
proclist = []
for i in xrange(x):
p = multiprocessing.Process(target=counter)
proclist.append(p)
p.start()

for i in proclist:
i.join()

@print_timing
def threadedrun(x):
threadlist = []
for i in xrange(x):
t = threading.Thread(target=counter)
threadlist.append(t)
t.start()

for i in threadlist:
i.join()

def main():
serialrun(50)
parallelrun(50)
threadedrun(50)

if __name__ == '__main__':
main()


Подробнее здесь: https://stackoverflow.com/questions/128 ... -and-linux
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ниды Python убиты, когда основная резьба выходит только с одним потоком, но выживает, когда создается более одного поток
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Ниды Python убиты, когда основная резьба выходит только с одним потоком, но выживает, когда создается более одного поток
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Golang Bound Узел Linux Numa имеет лучшую производительность
    Anonymous » » в форуме Linux
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Pthreads & Multicore CPU на Linux
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Pthreads & Multicore CPU на Linux
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»