многопроцессорность Python против многопоточности для работы с процессором в Windows и Linux

Для меня я удалил android-support-v4.jar из папки lib, а также удален из пути сборки.

30
задан manghole 17 August 2009 в 19:04
поделиться

4 ответа

В вариантах UNIX процессы намного легче. Процессы Windows тяжелы и требуют гораздо больше времени для запуска. Потоки - это рекомендуемый способ многопроцессорной обработки в Windows.

21
ответ дан 27 November 2019 в 23:53
поделиться

Документация python для многопроцессорной обработки обвиняет отсутствие os.fork () в проблемах в Windows. Это может быть применимо здесь.

Посмотрите, что происходит, когда вы импортируете psyco. Во-первых, easy_install it:

C:\Users\hughdbrown>\Python26\scripts\easy_install.exe psyco
Searching for psyco
Best match: psyco 1.6
Adding psyco 1.6 to easy-install.pth file

Using c:\python26\lib\site-packages
Processing dependencies for psyco
Finished processing dependencies for psyco

Добавьте это в начало вашего скрипта python:

import psyco
psyco.full()

Я получаю эти результаты без:

serialrun took 1191.000 ms
parallelrun took 3738.000 ms
threadedrun took 2728.000 ms

Я получаю эти результаты с:

serialrun took 43.000 ms
parallelrun took 3650.000 ms
threadedrun took 265.000 ms

Parallel все еще медленный, но другие сжигают резину.

Изменить: также попробуйте с многопроцессорным пулом. (Я пробую это впервые, и это так быстро, что, должно быть, я чего-то упускаю.)

@print_timing
def parallelpoolrun(reps):
    pool = multiprocessing.Pool(processes=4)
    result = pool.apply_async(counter, (reps,))

Результаты:

C:\Users\hughdbrown\Documents\python\StackOverflow>python  1289813.py
serialrun took 57.000 ms
parallelrun took 3716.000 ms
parallelpoolrun took 128.000 ms
threadedrun took 58.000 ms
25
ответ дан 27 November 2019 в 23:53
поделиться

В настоящее время ваша функция counter () не сильно изменяет состояние. Попробуйте изменить counter () так, чтобы он изменял многие страницы памяти. Затем запустите цикл, связанный с процессором. Посмотрите, существует ли по-прежнему большая разница между Linux и Windows.

Я сейчас не использую python 2.6, поэтому я не могу попробовать его сам.

1
ответ дан 27 November 2019 в 23:53
поделиться

Говорят, что создание процессов в Windows дороже, чем в Linux. Если вы поищете по сайту, вы найдете некоторую информацию. Вот один , который я нашел легко.

5
ответ дан 27 November 2019 в 23:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: