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),但进程之间的任务分配可能不均匀 - 这取决于任务运行时间。