Я использую многопроцессорность в моем коде, чтобы что-то делать параллельно.На самом деле в простой версии моей цели я хочу изменить некоторые глобальные переменные двумя разными процессами параллельно.
Но в конце выполнения кода результат, полученный из mp.Queue, верен, нопеременные не изменены.
вот простая версия кода:
import multiprocessing as mp
a = 3
b = 5
# define a example function
def f(length, output):
global a
global b
if length==5:
a = length + a
output.put(a)
if length==3:
b = length + b
output.put(b)
if __name__ == '__main__':
# Define an output queue
output = mp.Queue()
# Setup a list of processes that we want to run
processes = []
processes.append(mp.Process(target=f, args=(5, output)))
processes.append(mp.Process(target=f, args=(3, output)))
# Run processes
for p in processes:
p.start()
# Exit the completed processes
for p in processes:
p.join()
# Get process results from the output queue
results = [output.get() for p in processes]
print(results)
print ("a:",a)
print ("b:",b)
И удар - это ответы:
[8, 8]
a: 3
b: 5
Как я могу применить результаты процессов к глобальномупеременные?или как я могу запустить этот код с многопроцессорной обработкой и получить ответ, как запуск простого кода угрозы?