Использование TensorFlow вместе с пулом параллельных процессов

Мы интегрируем TensorFlow в более крупное приложение. Одним из требований является то, что мы можем загружать и выполнять существующие модели с диска и запускать их в главном потоке. Обучение может выполняться асинхронно в другом потоке.

Если мы выполняем что-то в TF в дочернем потоке перед основным потоком, тензор потока работает нормально.

Если мы запускаем что-то в TF в основном потоке перед дочерним потоком, тензор потока зависает.

from concurrent.futures import ProcessPoolExecutor as ProcessPool


def calculate_something():
    import tensorflow as tf

    with tf.Session() as sess:
        a = tf.constant(2)
        b = tf.constant(3)

        print("a=2, b=3")
        print("Addition with constants: %i" % sess.run(a+b))
        print("Multiplication with constants: %i" % sess.run(a*b))

calculate_something()

pool = ProcessPool(1)
pool.submit(calculate_something)

Я что-то здесь не так делаю? Я открываю новую сессию в каждом потоке, поэтому думаю, что этого будет достаточно.

Любая помощь приветствуется!

Jos

0 ответов

Другие вопросы по тегам