我目前有这段代码(欢迎对它进行评论 :))
def threaded_convert_to_png(self):
paths = self.get_pages()
pool = Pool()
result = pool.map(convert_to_png, paths)
self.image_path = result
在Linux上,它在Intel i7上生成八个工作进程;然而,在Windows 8.1 Pro上运行时,它仅生成一个工作进程。我检查了cpu_count()
在Linux和Windows上都返回8。
- 我是否漏掉了什么,或者做错了什么?
- 有没有解决这个问题的方法?
附:这是在Python 2.7.6中。
Pool.__init__
и°ғз”Ёcpu_count
жқҘиҺ·еҸ–й»ҳи®Өзҡ„иҝӣзЁӢж•°йҮҸпјҲеҸӮи§ҒLib/multiprocessing/pool.py
第146иЎҢпјүгҖӮжӯӨеӨ–пјҢ__init__
еңЁline 159и°ғз”ЁдәҶ_repopulate_pool
пјҢиҜҘеҮҪж•°еңЁline 213дёҠжү§иЎҢдёҖдёӘеҫӘзҺҜпјҢз”ҹжҲҗжӯЈзЎ®ж•°йҮҸзҡ„Process
е®һдҫӢгҖӮдҪ зЎ®е®ҡеҸӘжңүдёҖдёӘе·ҘдҪңиҝӣзЁӢиў«з”ҹжҲҗдәҶеҗ—пјҹдҪ жҳҜеҰӮдҪ•жЈҖжҹҘе·ҘдҪңиҝӣзЁӢж•°йҮҸзҡ„е‘ўпјҹ - BakuriuPool(processes=8)
,但仍然只有一个工作进程被生成。 - Drakkainendef f(path): print path, mp.current_process()
代替convert_to_png()
并启用日志记录mp.log_to_stderr().setLevel(logging.DEBUG)
。 - jfslen(paths)
是什么? - jfsif __name__ == '__main__':
中,并且convert_to_png
是否在其外部正确定义?(文档链接:http://docs.python.org/2/library/multiprocessing.html) - Matt