Как преобразовать 1000 PDF-файлов в изображения, используя многопоточность в Python, поскольку это занимает слишком много времени при последовательной обработке

#python #multithreading #python-multithreading

#python #многопоточность #python-многопоточность

Вопрос:

 def convertToImage(files):
    for file in files:
    #print(file)
        images = convert_from_path(file,500,strict=False)
        for i, image in enumerate(images):
            fileName = file.split(".")
            fileName = fileName[0]
            #print(fileName)
            fname = str(fileName)   "Image_"   str(i)   ".jpg"
            #print(fname)
            image.save(fname, "JPEG")
            if i == 0:
                imageList.append(fname)
            break
    return imageList
def main():
    files = (glob.glob(r"C:UsersABCDocumentsPDF Image*.pdf"))
    print(files)
    print(type(files))
    with concurrent.futures.ProcessPoolExecutor() as executor:
        executor.map(convertToImage,files)
if __name__ == '__main__':
    main()
  
 with concurrent.futures.ProcessPoolExecutor() as executor:
        executor.map(convertToImage,files)
  

Эти строки, похоже, не работают, они не выдают ошибку, но вывод пустой.

Комментарии:

1. Почему эти строки должны выводить что-либо? convertToImage ничего не печатается, и результат executor.map отбрасывается.

2. Похоже, это проблема ввода-вывода. вместо процесса помогут потоки. Вы также прерываетесь в первом цикле как i == 0 . Наконец, вы не получаете ответы обратно. вы должны назначить пул переменной.

3. Говоря, что вывод пустой, я имел в виду, что PDF-файлы не конвертированы, я не вижу изображений в папке. @MisterMiyagi

4. @Prayson W. Daniel — спасибо