Я пытаюсь использовать 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 как часть функции, и именно в этом и заключается проблема.