Особенности работы процессов. Не работает print из процесса
Изучаю Python. В учебном примере по multiprocessing добавил отладочную печать в процесс. Сам пример заработал, а вот печать 'test message' из процесса не работает. В аналогичном примере с потоками печать из потока работает. Поиск не помог. Просьба пояснить, почему не работает, или что умное прочитать:-)
from multiprocessing import Process, Queue
def sq(value, q):
print('test message')
q.put(value**2)
if __name__ == "__main__":
number = 2
q = Queue()
proc = Process(target=sq,args=(number, q))
proc.start()
proc.join()
while not q.empty():
print(q.get(), end=" ")
Ответы (1 шт):
Выяснилось в результате, что печать в потоке не работает у меня исключительно в IDLE Shell 3.10.2. На внешнем сайте отладки работает, в PyCharm 2021 3.3. Community Edition (специально установил) работает.
Обновление ответа: проблема встречалась не у меня одного. Нашел пояснение на overcoder.net: "Это проблема с IDLE, которую вы используете для запуска кода. IDLE выполняет довольно базовую эмуляцию терминала для обработки вывода программы, которую вы запускаете в ней. Однако он не может обрабатывать подпроцессы, поэтому, пока они будут работать в фоновом режиме, вы никогда не увидите их вывод. Самое простое решение - просто запустить ваш код из командной строки. Альтернативой может быть использование более сложной среды IDE."
Огромное спасибо @Сергей Шашко, который и у себя всё проверял, и мне посоветовал PyCharm и прочее!
Очень важный для меня (и, возможно, для других новичков) вывод: не работает в базовой среде - не зацикливаться на ней, пробовать в других средах.