Почему процесс не запускается сразу после вызова метода start () (многопроцессорная обработка Python) - PullRequest
0 голосов
/ 10 сентября 2018

Я обнаружил в программе, которую написал ниже, после того, как я позвонил start(), процесс loop_a() не печатается сразу.Только если я наберу текст, процесс loop_a() может запуститься ().Если я вызываю run () после вызова start(), процесс loop_a() запускается немедленно.Но цикл никогда не сталкивается с main().

Может кто-нибудь объяснить мне, почему он так себя ведет?

from multiprocessing import Process, Manager
import time


def loop_a(go):
    while True:
        # run forever and print out the msg if the flag is set
        time.sleep(1)
        print("a")

if __name__ == '__main__':
    # shared value flag
    manager = Manager()
    go_flag = manager.Value('flag', True)

    # other process that is printing
    Process(target=loop_a, args=(go_flag,)).start()
    #Process(target=loop_a, args=(go_flag,)).run()
    # normal main thread; toggle on and off the other process
    while True:

        text = input('Stop Y/N?')
        if text == 'Y':
            go_flag.value = False
            print("Changed the flag {}".format(go_flag.value))
        else:
            go_flag.value = True
            print("Changed the flag {}".format(go_flag.value))
...