繁体   English   中英

执行Python多处理时的图像路径问题

[英]Image path problem when executing Python multiprocessing

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

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)

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM