Windows 8.1上的Python多处理池只产生一个工作线程

Dra*_*nen 12 python pool multiprocessing

我目前有这段代码(随意评论:))

def threaded_convert_to_png(self):
    paths = self.get_pages()
    pool = Pool()
    result = pool.map(convert_to_png, paths)
    self.image_path = result
Run Code Online (Sandbox Code Playgroud)

在Intel i7上,它在Linux上运行时会产生8个工作线程; 但是,在运行Windows 8.1 Pro时,它只会生成一个工作程序.我检查并cpu_count()在Linux和Windows上返回8.

  • 我在这里缺少什么,或做错了什么?
  • 有办法解决这个问题吗?

PS这是在Python 2.7.6中

小智 1

有一种简单的方法可以确定池中发生的情况 - 打开多处理调试。你可以这样做:

import logging
from multiprocessing import util

util.log_to_stderr(level=logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)

在脚本运行时,您将获得有关进程运行、生成和退出的完整信息。

但无论如何,进程池总是生成 N 个进程(其中 N - “进程”参数值或 cpu_count),但进程之间的任务分配可能不均匀 - 这取决于任务运行时间。