def __init__(self): self._device_0 = '/gpu:0' self._device_1 = '/gpu:1' if self._session is None: config = tf.ConfigProto() config.allow_soft_placement = True config.gpu_options.allow_growth = True self._session = tf.Session(config=config) if self._extractor is None: self._extractor = extractor(self._session, [self._device_0], 1) if self._aligner is None: self._aligner = aligner(self._session, [self._device_1], 1)
import base64 import cv2 import io from PIL import Image from ext.extractor import extractor from ext.aligner import aligner #TODO set different gpu devices device = '/gpu:1' config = tf.ConfigProto() config.allow_soft_placement = True config.gpu_options.allow_growth = True session = tf.Session(config=config) Extractor = extractor(session, [device], 1) Aligner = aligner(session, [device], 1) connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1')) channel = connection.channel() channel.queue_declare(queue='worker_queue', durable=True) def callback(ch, method, properties, body): try: start = time.time() encoded_data = body key = encoded_data[0:9] encoded_data = encoded_data[9:] img_data = base64.b64decode(encoded_data) image = Image.open(io.BytesIO(img_data)) img = cv2.cvtColor(np.array(image), cv2.IMREAD_COLOR)