Как обновить разделяемую переменную в отдельном процессе в многопроцессорной среде?

Я пытаюсь реализовать параллелизм с использованием Python.

Я использую VS 2017 с Python версии 3.7.

Мой код, как показано ниже:

def do_parallelization(self, link_list):
    cpus = multi.cpu_count()
    workers = []
    page_bins = self.__get_chunks(cpus, link_list)

    array_s = Array(c_wchar_p,3)
    for cpu in range(cpus):
    #sys.stdout.write("CPU " + str(cpu) + "\n")
    # Process that will send corresponding list of pages 
    # to the function perform_extractionpage_bins[cpu]
        try:
            worker = multi.Process(name=str(cpu), target= self.get_page_content_para, args=(page_bins[cpu], array_s))
            worker.daemon = True
            workers.append(worker)
        except Exception as e:
            print(e)

    for worker in workers:
        worker.start()
    for worker in workers:
        worker.join()
    print (array_s[:])


def get_page_content_para(self, link_list, array_s):
    array_s[:] = ["up", "down", "left"] 

Здесь я пытаюсь обновить Array но в конце вызова функции я печатаю массив, который дает мне вывод ниже:

["","",""]

Я искал в Интернете, но все говорят, что следует обновить переменную. Я что-то пропустил?

1 ответ

Я могу получить ожидаемый результат, когда я положу

worker.start()
worker.join()

под

worker = multi.Process(name=str(cpu), target= self.get_page_content_para, args=(page_bins[cpu], array_s))

но когда я говорю, что это действительно делает параллелизм?

как я понимаю, когда переписывают, как уже упоминалось, он выполняется один за другим, я имею в виду один запуск процесса, завершение его, а затем запускается второй процесс.

это параллелизм?

кто-нибудь может объяснить это?

Другие вопросы по тегам