Я экспериментирую с использованием модуля multiprocessing
в python
. У меня есть приведенный ниже пример кода, который выполняется без ошибок в ноутбуке ipython. Но я вижу, что есть дополнительные процессы python, возникшие в фоновом режиме при каждом выполнении блока кода в ноутбуке.
import multiprocessing as mp
def f(x):
print "Hello World ", mp.current_process()
return 1
pool = mp.Pool(3)
data = range(0,10)
pool.map(f, data)
Если я сохраняю то же самое в обычном файле .py и выполняю, я сталкиваюсь с ошибками и должен завершить работу терминала, чтобы остановить выполнение программы.
Я исправил это, создав if __name__ == '__main__':
и создав пул под этим, а также используя pool.close()
, чтобы закрыть пул.
Мне интересно узнать, какие рекомендации следует использовать при использовании multiprocessing
и связанных с ним функций, таких как map
, apply
, apply_async
и т.д.? Я планирую использовать этот модуль для параллельного чтения файлов и, надеюсь, применить его к нескольким алгоритмам ML, чтобы ускорить процесс.