Как стать автором
Обновить

Многоконсольный вывод для Python

Время на прочтение2 мин
Количество просмотров7.8K

Мотив создания ...

Существует много проектов в которых нужно сразу увидеть результат переменных в момент выполнения программы. Например обработка нажатий клавиш от пользователя, навигация между страницами в GUI приложениях, обработка данных из форм на веб проектах. В общем во всех проектах где есть цикл событий, хорошо бы видеть значения переменных, когда идет процесс отладки. Для этого используют обычный print() но он по стандарту ограничен одной консолью, или logging() но его нужно относительно дольше настраивать, чем проект console-debugger, по причине того что нужно указывать файл, стиль вывода данных в файл, рейтинг обработки, в ручную запускать слежение за файлом, вручную закрывать слежение за файлом, когда вам больше не нужен обработчик. Я понимаю плюсы логирования но они не подходят для дебаггинг.

Console-debugger

Это программа на Python создана для вывода данных в несколько окон. Подробно можно почитать на GitHub

Установка через pip

pip install console-debugger
Терминал Manjaro Linux
Терминал Manjaro Linux
Терминал PyCharm
Терминал PyCharm
Gui Tkinter
Gui Tkinter

Пример использования

import random
import string

random_word = lambda: "".join(random.choice(string.ascii_letters) for j in range(random.randint(1, 40)))

from console_debugger import Debugger, printD
from console_debugger.helpful.template_obj import dDEBUG, dWARNING, dINFO

if __name__ == '__main__':
	a = Debugger(**dDEBUG)
	b = Debugger(**dINFO)
	c = Debugger(**dEXCEPTION)

	Debugger.GlobalManager(typePrint="socket")

	for x in range(10):
		print(random_word(), file=a)
		print(random_word(), file=b)
		print(random_word(), file=c)
import random
import string

random_word = lambda: "".join(random.choice(string.ascii_letters) for j in range(random.randint(1, 40)))

from console_debugger import Debugger, printD
from console_debugger.helpful.template_obj import dDEBUG, dWARNING, dINFO

if __name__ == '__main__':
	a = Debugger(**dDEBUG)
	b = Debugger(**dINFO)
	c = Debugger(**dEXCEPTION)

	Debugger.GlobalManager(typePrint="socket")

	for x in range(10):
		printD(a,"Название 1", "Примечание 1",random_word())
		printD(b,"Название 2", "Примечание 2",random_word())
		printD(c,"Название 3", "Примечание 3",random_word())

Трассировка имени переменных и конвертирование различных данных в str

from console_debugger import Debugger, printD
from console_debugger.helpful.template_obj import dDEBUG, dWARNING, dINFO

if __name__ == '__main__':
	a = Debugger(**dDEBUG)
	b = Debugger(**dINFO)
	c = Debugger(**dEXCEPTION)

	Debugger.GlobalManager(typePrint="socket")

	TracingName1 = "1"
	TracingName2 = ["1"]
	TracingName3 = "1",

	for x in range(10):
		printD(a, TracingName1)
		printD(b, TracingName2)
		printD(c, TracingName3)
Теги:
Хабы:
Всего голосов 7: ↑3 и ↓4+3
Комментарии25

Публикации

Истории

Работа

Python разработчик
121 вакансия
DevOps инженер
44 вакансии
Data Scientist
78 вакансий

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань