首页 > 解决方案 > 执行Python多处理时的图像路径问题

问题描述

没有多处理就没有问题。单独使用多处理会导致路径问题。再怎么搜索也找不到内容的答案,所以求助

import numpy as np
import tensorflow as tf
import pandas as pd
from keras.preprocessing.image import array_to_img, img_to_array, load_img
import time
from multiprocessing import Pool


def b(path):
    for f in path:   
        print (f)     
        new_img = load_img(f,target_size=(256,256)) 
        arr_img = img_to_array(new_img)
    return arr_img


def main():
    start = int(time.time())
    num_cores = 4
    pool = Pool(num_cores)
    pool.map(b, 'C:\\Users\\003.png')
    print("***run time(sec) :", int(time.time()) - start)


if __name__ == "__main__":
    main()

错误信息

load_img
    with open(path, 'rb') as f:

FileNotFoundError: [Errno 2] No such file or directory: 'C'

即使将其作为变量如下所示,错误消息也是相同的。

def main():
    start = int(time.time())
    num_cores = 4
    pool = Pool(num_cores)
    bb = 'C:\\Users\\003.png'
    pool.map(b, bb)
    print("***run time(sec) :", int(time.time()) - start)

标签: python

解决方案


这段代码有问题。 pool.map(b, 'C:\\Users\\003.png')

您正在使用地图,第一个参数是一个函数(这对您来说可以),第二个需要是可迭代的,所以它需要像(例如一个列表)['C:\\Users\\003.png']

因为你给它的'C:\\Users\\003.png'map 试图像 C 一样迭代它,然后 :\ 等等。这是抛出错误。所以请将您的代码更改为(即列表)

pool.map(b, ['C:\\Users\\003.png'])


推荐阅读