Multiprocess pool.map () останавливается после первого набора входов - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь использовать pool.map () для сериализации функции, которая принимает один единственный ввод и записывает вывод в файл csv. Кажется, что процесс останавливается после первого набора входов. Я запускаю код на Debian с 4 ядрами.

from multiprocessing import Pool, cpu_count
from keras.models import load_model
input = [1,2,3,4,5,6,7,8]
model = load_model(directory)
def func(input):
    # some calculations
    prediction = model.predict(data)
    # more calculations
    print('Currently working on', input)
    df.to_csv(directory)

def main():
    workers = cpu_count()
    pool = Pool(processes=workers)
    pool.map(func, input)
    pool.close()
    pool.join()

if __name__ == '__main__':
    start = time.time()
    main()
    print('That took {} seconds'.format(time.time() - start))
Currently working on 1
Currently working on 2
Currently working on 3
Currently working on 4

Я получаю вышеуказанный вывод, а затем он не переходит к последующим входам. Я протестировал функцию без многопроцессорности, и она работает нормально, поэтому я предполагаю, что проблема находится где-то в Pool().

Edit: После некоторой отладки я обнаружил проблему. Я использую модель Keras как часть функции, и именно в этом и заключается проблема.

...