Как разблокировать завал из-за очереди? - PullRequest
0 голосов
/ 28 мая 2020

Я запускаю следующий сценарий Python (здесь показана только основная часть) без каких-либо проблем и получаю выполнение обеих моделей (model1 и model2) одновременно: [вызов модели просто выводит имя модели ]

      from multiprocessing import Process, Queue
      <....>
      with tf.Session() as sess:
          with concurrent.futures.ThreadPoolExecutor(max_workers = 100) as executor:
              a = executor.submit(model1())
              b = executor.submit(model2())

Теперь я хочу соединить оба процесса с помощью очереди, для которой я изменил сценарий как:

      with tf.Session() as sess:
          q = Queue()
          with concurrent.futures.ThreadPoolExecutor(max_workers = 100) as executor:
              a = executor.submit(model1(q))
              b = executor.submit(model2(q))

В этом случае я заметил, что model1 выполняется, но модель2 заблокирована. Только если я остановлю текущее выполнение, я буду наблюдать печать, выполненную model2. Кроме того, когда я помещаю в сценарий модель 2 перед моделью 1, выполнение показывает мне распечатки модели 2, а при остановке выполнения появляются распечатки модели 1. Таким образом, кажется, что существует своего рода блокировка, вызванная использованием очередь.

Как отключить этот эффект блокировки, чтобы обе модели выполнялись параллельно?

Буду признателен за комментарии о том, как решить эту проблему. Спасибо!

...