Я выясняю эту проблему RunTimeError, когда запускаю ту же программу на MacOS. На самом деле, эта ошибка RuntimeError связана со способом , как Windows компилирует файл .py.
Чтобы исправить это, самый простой способ - передать тело программы в функцию main()
(хотя в моем случае это сложно), а затем добавить freeze_support()
в модуль multipleprocessing
. Так что в итоге это будет выглядеть так:
import func1, func2, func3, ... # некоторые манипуляции на одном и том же массиве ndarray, но каждая из них работает независимо, возвращает независимый результат
import multiprocessing as mp
from multiprocessing import freeze_support()
def main():
with mp.Pool(processes=mp.cpu_count()) as pool:
task1 = pool.Process(target=fun1, args(arg1, arg2, ...)
task2 = pool.Process(target=fun2, args(arg1, arg2, ...)
task3 = pool.Process(target=fun3, args(arg1, arg2, ...)
...
task1.start()
task2.start()
task3.start()
...
variable1 = task1.join() #In my case, I need to get the returns of these functions
variable2 = task2.join()
variable3 = task3.join()
...
if __name__ == '__main__':
freeze_support()
main()