Найти - Пользователи
Полная версия: Параллельное программирование
Начало » Python для новичков » Параллельное программирование
1
Marat__
Есть такое дело:
         for item_fi in all__1:
            my_func()
  #          thread.start_new_thread(my_func,)
где all__1 лист из пары сотен значений.
Хочу распараллеливать цикл, то есть часть набора из all__1 считать на разных ядрах (вручную я это делал запуская несколько питонов в разных терминалах и каждому указывая свой набор all__1, что некрасиво). Попытки прикрутить thread.start_new_thread (закоментено) не прошли. Также не зашел multiprocessing (процесс зависал, может потому что работаю под виндоус). Задачка простенькая, а я уже второй день не могу ее решить. Может кто что подсказать? Спасибо
FishHook
В питоне этого сделать нельзя, забудь
doza_and
Ну почему нельзя. Питон отлично запустит кучу тредов, другое дело что это ничего не ускорит.

Я бы рекомендовал почитать.
https://docs.python.org/3/library/concurrent.futures.html

Если функции на питоне то используйте ProcessPoolExecutor
Marat__
процесс зависал, может потому что работаю под виндоус
Под виндами
1 помоему надо специально скрипт оформлять, чтобы было if __main__.
2 Передаваемые аргументы очевидно должны уметь пиклиться.
3. Давненько пробовал под виндой использовать multiprocessing Оказалось что процессы в виндоусе запускаются безумно долго, доходило до 80 мс (в юникс системах если данных немного то запуск процесса мало чем отличается от треда). Это под windows 7 было. Может сейчас что и поменялось, но винды уж нет, не попробуешь.

FishHook
FishHook
Хочу распараллеливать цикл, то есть часть набора из all__1 считать на разных ядрах
doza_and
Ну почему нельзя.
разве можно?
Rodegast
> разве можно?

Можно, только через multiprocessing. Но ожидать от распараллеливания через процессы какой-то эффективности не стоит.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB