Мне необходимо создать еще одно окно cmd для вывода туда данных. Накидал небольшой класс, который использует
очереди для передачи в консоль текста, win32console для инициализации самой консоли и multiprocessing для запуска всего этого. Все отлично работает до того момента, пока не понадобится запустить еще одну консоль вне главного потока приложения, например, в функции, которая запущена через threading. Multiprocessing, судя по всему, не поддерживает этого.
Вот мой код:
class Console:
def __init__(self) -> None:
self.output = multiprocessing.Queue()
def window(self) -> None:
try:
win32console.FreeConsole()
win32console.AllocConsole()
win32console.SetConsoleTitle(f'ConsoleWindow')
while True:
message = self.output.get()
print(message)
except Exception as e:
raise e
def log(self, message) -> None:
self.output.put(message)
'''
Без проверки if будет ошибка:
The "freeze_support()" line can be omitted if the program
is not going to be frozen to produce an executable.
'''
if __name__ == '__main__':
console = Console()
multiprocessing.Process(target = console.window).start()
console.log('Hello!')