【发布时间】:2015-03-06 17:09:38
【问题描述】:
当我只使用 1 个内核时,为什么我会看到这么多 python 进程在运行(在 htop 上的 RHEL 6 上)相同的脚本?
对于每个任务,我都会初始化一个管理处理的工作类。它会初始化其他类,但不会初始化任何子进程:
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 的工作原理。
【问题讨论】:
-
看起来 htop 正在向您展示进程内运行的每个线程。比较
ps -ef和ps -eLf(-L将线程添加到输出中)。 -
或者,您可以在 htop 中键入
H来隐藏/显示用户线程。 -
线程!谢谢,可能应该想到这一点。
标签: python linux python-2.7 multiprocessing