Я обнаружил в программе, которую написал ниже, после того, как я позвонил 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))