Блок concurrent.futures игнорируется в экземпляре aws ec2 - PullRequest
0 голосов
/ 01 февраля 2019

Я создаю образ докера для моего проекта приложения с флягой Python и развертываю его на AWS.Одна из моих программ использует concurrent.futures для включения некоторых многопроцессорных функций.Но я понял, что AWS игнорирует весь блок concurrent.futures, и это приводит к ошибке.

pdf_to_img_to_text.py.Эта программа вызывается какой-то другой программой.Он отлично работает на моей локальной машине.Но в моем экземпляре AWS он полностью игнорирует блок with with concurrent.futures.ProcessPoolExecutor(max_workers=10) as executor: и, поскольку ничего не получает в файле dict_map, в результате получается KeyError.Пожалуйста, объясните, почему блок с concurrent.futures игнорируется в AWS.

from PyPDF2 import PdfFileReader
import os
import pytesseract
from pytesseract import image_to_string
import PIL.Image
from PIL import Image
from wand.image import Image as Img
import os
import glob
import concurrent.futures
import time

def no_of_pages(file):
pdf = PdfFileReader(open(file,'rb'))
pages = pdf.getNumPages()
return pages

def ocr(file):
    print("Converting PDF to Image to Text....")
    print(file)
    text = ' '
    im = PIL.Image.open(os.path.join(file))
    text = text + image_to_string(im)
    try:
        os.remove(file)
    except:pass
    return text


os.environ['OMP_THREAD_LIMIT'] = '1' 
def convert_pdf_to_image_to_txt():
    dict_map = {}
    path = "something"
    file = "something"
    f = "something"
    with Img(filename=file, resolution=300) as img:
        img.compression_quality = 99
        img.save(filename = os.path.join('C://Users//aswathi.nambiar//Desktop//Output_Images',f + '.jpg'))

    with concurrent.futures.ProcessPoolExecutor(max_workers=10) as executor:
        image_list = glob.glob(path+"\\*.jpg")
        i = 0
        for img_path,text in zip(image_list,executor.map(ocr,image_list)):
            print(img_path.split("\\")[-1],',',', processed')
            dict_map[img_path.split("\\")[-1]] = text

    print(dict_map)
    pages = no_of_pages(file)
    text = ' '

    for i in range(0,pages):
        print(f+'-'+str(i)+'.jpg')
        print(dict_map[f+'-'+str(i)+'.jpg'])
        text = text + dict_map[f+'-'+str(i)+'.jpg']
    return text
...