Я хотел собрать результат с каждого задания в многопроцессорной среде.Вот игрушечный код:
from multiprocessing.pool import Pool
from random import randint
def main():
num = 0
def cb(arg):
num += arg
p = Pool(5)
pp = []
for i in range(10):
pp.append(p.apply_async(randint,(1,10),callback=cb))
for i in range(10):
pp[i].wait()
return num
if __name__ == '__main__':
print(main())
Для каждого задания он будет генерировать случайное целое число от 1 до 10, и я использую переменную num
для их суммирования.
Этот код будетподнять ошибку: UnboundLocalError: local variable 'num' referenced before assignment
Я знаю, как решить эту проблему - сделать num
глобальной переменной.Но мой вопрос: почему я не могу сделать такую функцию закрытия, чтобы суммировать результаты от заданий?