Я новичок в многопоточности. Читая «Программирование Python» Марка Лутца, я застрял на этой строке
, обратите внимание, что из-за его простодушных бесконечных циклов по крайней мере один из его потоков не может d ie на Ctrl- C на Windows вам может потребоваться использовать диспетчер задач, чтобы убить процесс python .exe, запускающий этот скрипт, или закрыть это окно для выхода
Но, согласно моим небольшим знаниям о потоки все потоки завершаются при выходе из основного потока. Так почему бы не в этом коде?
# anonymous pipes and threads, not process; this version works on Windows
import os
import time
import threading
def child(pipe_out):
try:
zzz = 0
while True:
time.sleep(zzz)
msg = ('Spam %03d\n' % zzz).encode()
os.write(pipe_out, msg)
zzz = (zzz + 1) % 5
except KeyboardInterrupt:
print("Child exiting")
def parent(pipe_in):
try:
while True:
line = os.read(pipe_in, 32)
print('Parent %d got [%s] at %s' % (os.getpid(), line, time.time()))
except KeyboardInterrupt:
print('Parent Exiting')
pipe_in, pipe_out = os.pipe()
threading.Thread(target=child, args=(pipe_out, )).start()
parent(pipe_in)
print("main thread exiting")