能够使用 PIL 创建缩略图,但我的多处理代码无法创建 PIL 缩略图



我正在尝试学习如何在 64 位 Windows 7 PC 上使用 python 2.7 将多处理与 PIL 一起使用。

我可以使用PIL成功创建(并保存(缩略图到PC上的所需位置。当我尝试实现多处理时,我的代码不会创建任何缩略图,并且它循环浏览文件的速度大约是其两倍。我在多个目录和子目录中有大约 9,000 个图像文件(我无法控制文件名而不是目录结构(

这是有效的代码的基础。

from multiprocessing import Pool, freeze_support
import os
from fnmatch import fnmatch
from timeit import default_timer as timer
from PIL import Image, ImageFile
starttime = timer()
SIZE = (125, 125)
SAVE_DIRECTORY = r'c:pathtothumbs'
PATH = r'c:pathtodirectorieswithphotos
def enumeratepaths(path):
    """ returns the path of all files in a directory recursively"""
def create_thumbnail(_filename):
    try:
        ImageFile.LOAD_TRUNCATED_IMAGES = True
        im = Image.open(_filename)
        im.thumbnail(SIZE, Image.ANTIALIAS)
        base, fname = os.path.split(_filename)
        outfile = os.path.split(_filename)[1] + ".thumb.jpg"
        save_path = os.path.join(SAVE_DIRECTORY, outfile)
        im.save(save_path, "jpeg")
    except IOError:
        print " cannot create thumbnail for ... ",_filename

if __name__ == '__main__':
    freeze_support() # need this in windows; no effect in *nix
    for _path in enumeratepaths(PATH):
        if fnmatch(_path, "*.jpg"):
            create_thumbnail(_path)
            # pool = Pool()
            # pool.map(create_thumbnail, _path)
            # pool.close()
            # pool.join()

该代码有效并在所需位置创建 9,000 个缩略图。当我注释掉 create_thumbnail(_path( 并取消注释多处理代码时,代码遍历目录结构的速度是原来的两倍,但不创建任何缩略图。如何调整多处理代码以使其正常工作?

代码"pool.map(create_thumbnail, _path("需要为pool.map(create_thumbnail(_path(,_path(才能创建缩略图

相关内容

  • 没有找到相关文章

最新更新