Почему я вижу так много запущенных процессов python (в htop
on RHEL 6
) для одного и того же script, когда я использую только 1 ядро?
Для каждой задачи я запускаю рабочий класс, который управляет обработкой. Он инициализирует другие классы, но не подпроцессы:
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.
Я считаю, что вы видите вспомогательные потоки, созданные модулем Multiprocessing в основном pid из вашего приложения. Это в дополнение к Threads/Processes, которые вы развернули явно.
ps -ef
сps -eLf
(-L
добавляет потоки в вывод).H
в htop, чтобы скрыть / показать пользовательские темы.