многопроцессорный Python большой диапазон - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь понять, как использовать многопроцессорность.Мой пример кода:

import multiprocessing as mp
import time

def my_func(x):
  print(mp.current_process().pid)
  time.sleep(2)
  return x**x

def main():
  pool = mp.Pool(mp.cpu_count())
  result = pool.map(my_func, range(1, 10))

  print(result)

if __name__ == "__main__":
  main()

но если у меня большой диапазон (от 1 до 5 миллионов).Нужно ли использовать range(1,5000000) или есть лучшее решение?my_func поработает с базой данных.

1 Ответ

0 голосов
/ 26 февраля 2019

У пула не возникнет проблем при работе с большим диапазоном.Это не увеличит использование памяти или процессора.Он все равно будет создавать столько процессов, сколько вы укажете, и каждый процесс будет получать по одному номеру из диапазона за раз.Диапазон не будет скопирован.Нет необходимости разбивать его на части.

Единственное предостережение в том, что в Python 2 вам, вероятно, следует использовать xrange.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...