В многопроцессорном приложении основной процесс порождает несколько подпроцессов. Каждый процесс предназначен для запуска собственного Tornado iol oop. Однако я заметил, что при запуске процесса все экземпляры IOLoop.current()
(в основном и всех подпроцессах) совпадают. Не означает ли это, что ioloop.spawn_callback(my_func)
работает все в одном контексте iol oop (в основном процессе)?
Вот минимальный пример, который я мог бы извлечь:
from tornado.ioloop import IOLoop
import time
from multiprocessing import Process
def sub(i):
print('sub %d: %s' % (i, hex(id(IOLoop.current(True)))))
for i in range(10):
time.sleep(1)
def main():
print('main ', hex(id(IOLoop.current(True))))
for i in range(2):
sub_process = Process(target=sub, args=(i, ))
sub_process.daemon = True
sub_process.start()
time.sleep(5)
main()
Вывод:
main 0x7f14a09cf750
sub 0: 0x7f14a09cf750
sub 1: 0x7f14a09cf750
Правильно ли созданы процессы, а не ожидаемое поведение, которое могло бы быть несколькими iol oop экземпляров?