Итак, у меня есть простой код MP, и он работает как шарм. Однако, когда я выполняю очень простую постобработку данных, сгенерированных с помощью MP, код больше не работает. Он никогда не останавливается и не работает как всегда! Это код (и снова он отлично работает):
import numpy as np
from multiprocessing import Pool
n = 4
nMCS = 10**5
def my_function(j):
result = []
for j in range(nMCS // n):
a = np.random.rand(10,2)
result.append(a)
return result
if __name__ == '__main__':
__spec__ = "ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>)" # this is because I am using Spyder!
pool = Pool(processes = n)
data = pool.map(my_function, [i for i in range(n)])
pool.close()
pool.join()
#final_result = np.concatenate(data) ### this is what ruins my code! ###
Между тем, если я добавлю final_result = np.concatenate(data)
в конце, это никогда не сработает! Я использую Spyder , и если я просто наберу final_result = np.concatenate(data)
в консоли ПОСЛЕ завершения MP, это даст мне то, что я хочу, то есть объединенный список. Однако, если я добавлю эту простую строку в основную программу в самом конце, она просто не будет работать. Может кто-нибудь сказать мне, как это исправить?
P.S. это очень простой пример, который я создал, чтобы вы могли понять, что происходит; Моя настоящая проблема намного сложнее, и я никак не могу выполнить постобработку после завершения работы с MP.