2017-07-17 8 views
1

Ich versuche, um mehrere Bilder mit AWS RekognitionMake api ruft parallel

In Haupt-Funktion in einer Schleife zu analysieren:

with open("Test/frame%d.jpg" % count, "rb") as image: 
    for face in RekognitionClass.detect_faces(image): 
    =>Process result and write in DB 

Rekognition Klasse:

def detect_faces(image, attributes=['ALL'], region="eu-west-1"): 
rekognition = boto3.client("rekognition", region) 
response = rekognition.detect_faces(Image={'Bytes': image.read()}, Attributes=attributes) 
return response['FaceDetails'] 

Aber man api Anruf dauert ca. Mindestens 2 Sekunden, und ich würde gerne mehr parallele Anrufe machen, wenn möglich

Antwort

0

konnte ich Machen Sie mehr parallele Funktionsaufrufe mit Python Multithreading und starten Sie die Funktion detect_faces in einem neuen Thread jedes Mal. Es ist wichtig, die boto3 Client-Sitzungen für das Multi-Thread

Haupt zu verwenden:

p = Process(target=RekognitionClass.detect_process_faces, args= (count,)) 
    p.start() 

in RekognitionClass:

def detect_faces(count, attributes=['ALL'], region="eu-west-1"): 
session = boto3.session.Session() 
rekognition = session.client("rekognition", region)...