Так что с multiprocessing.pool невозможно создать разные процессы, где каждый процесс имеет свою собственную копию глобальной переменной. Поскольку при создании пулов все задачи ставятся в очередь, и задачи назначаются тому пулу, который свободен.
Так что для моей проблемы сейчас я использую multiprocessing.process, я создал два процесса, и теперь у каждого есть своя собственная копия глобальной переменной, и каждый процесс может хранить и изменять глобальную переменную. Ниже я публикую свой текущий код.
import multiprocessing
from multiprocessing import Pool,process,Process
import os
import time
#input = [1,10]
first = 0
def printer (input) :
while True :
global first
first += input
print(f'Process {os.getpid()} for input={input} first={first}')
time.sleep(2)
if __name__ == '__main__':
p1 = multiprocessing.Process(target=printer, args=(1,))
p2 = multiprocessing.Process(target=printer, args=(10,))
p1.start()
p2.start()
и мне пришлось переместиться, пока True в моей функции, потому что после завершения процесса он не может перезапустить тот же процесс.