【问题标题】:Python multiprocessing: more processes than requestedPython多处理:比请求更多的进程
【发布时间】: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 -efps -eLf-L 将线程添加到输出中)。
  • 或者,您可以在 htop 中键入 H 来隐藏/显示用户线程。
  • 线程!谢谢,可能应该想到这一点。

标签: python linux python-2.7 multiprocessing


【解决方案1】:

我相信您会在应用的主 pid 中看到由 Multiprocessing 模块启动的辅助线程。这些是您明确启动的线程/进程的补充。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-17
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多