Многопроцессорная обработка Python: больше процессов, чем запрошено

1

Почему я вижу так много запущенных процессов python (в htop on RHEL 6) для одного и того же script, когда я использую только 1 ядро?

Изображение 174551

Для каждой задачи я запускаю рабочий класс, который управляет обработкой. Он инициализирует другие классы, но не подпроцессы:

    tasks = multiprocessing.JoinableQueue()
    results = multiprocessing.Queue()

    num_consumers = 1

    consumers = [Consumer(tasks, results) for i in xrange(num_consumers)]
    for i, consumer in enumerate(consumers):
        logger.debug('Starting consumer %s (%i/%i)' % (consumer.name, i + 1, num_consumers))
        consumer.start()

Примечание. atop показывает ожидаемое количество процессов (в данном случае 2: ​​1 для родителя и 1 для дочернего). % MEM часто добавляет до 100%, поэтому я понимаю, что не понимаю, как работает многопроцессорность или htop.

  • 3
    Похоже, htop показывает вам все потоки, запущенные внутри процесса. Сравните ps -ef с ps -eLf ( -L добавляет потоки в вывод).
  • 2
    Кроме того, вы можете ввести H в htop, чтобы скрыть / показать пользовательские темы.
Показать ещё 1 комментарий
Теги:
python-2.7
multiprocessing

1 ответ

0

Я считаю, что вы видите вспомогательные потоки, созданные модулем Multiprocessing в основном pid из вашего приложения. Это в дополнение к Threads/Processes, которые вы развернули явно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню