Сейчас я изучаю многопроцессорную библиотеку на python, поэтому я планирую несколько экспериментов, чтобы посмотреть, как протекает весь процесс. Я запутался в эксперименте ниже. Первый вопрос заключается в том, почему значение link_id
, которое использует каждый подпроцесс, по-прежнему равно 0. Второй вопрос заключается в том, почему line3-line6 выполнялась много раз (в моем случае 9 раз), и оно не равно количеству подпроцессов. Я имею. Python версия: 3.7.4, Операционная система: win10
from multiprocessing import Pool
link_id = 0
print('head is printing link, value {}, id {}'.format(link_id,id(link_id)))
node_id = 0
print('head is printing node, value {}, id {}'.format(node_id,id(node_id)))
def job(i):
print('job {} is printing link, value {}, var id {}'.format(i,link_id,id(link_id)))
def mainFunc():
p = Pool()
for i in range(20): p.apply_async(job, args=(i,))
p.close()
p.join()
if __name__ == '__main__':
link_id = 10
print('main is printing link, value {}, id {}'.format(link_id,id(link_id)))
mainFunc()
print('main is printing link, value {}, id {}'.format(link_id,id(link_id)))