Основной процесс в формате ведения журнала %process

#python #python-3.x

#python #python-3.x

Вопрос:

Я настраиваю ведение журнала как

 import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s-%(levelname)s-%(process)d-%(processName)s-  %(message)s')
logging.debug("Start of program")

def factorial(n):
    logging.debug('Start of factorial(%s)' %(n))
    total = 1
    for i in range(n 1):
        total *= i 
        logging.debug('i is '   str(i)   ', toal is '   str(total))
    logging.debug('End of factorial(%s)' %(n))
    return total 
print(factorial(10))
logging.debug("End of program")
  

Планируете отслеживать имя процесса и ProcessId,

К сожалению, он предоставляет мало полезной информации

 $ python py_logging.py 
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  Start of program
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  Start of factorial(10)
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 0, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 1, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 2, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 3, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 4, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 5, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 6, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 7, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 8, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 9, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  i is 10, toal is 0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  End of factorial(10)
0
2019-03-20 23:11:15,014-DEBUG-12876-MainProcess-  End of program
  

Что означает основной процесс?который не предоставляет никакой информации

Я предполагаю, что такая структура может быть полезной

 2019-03-20 23:18:47,447-DEBUG-16076-MainProcess-  Start of program
systemd,1 splash
  `-systemd,2122 --user
      `-code,3521
          `-code,3539
              `-code,3691
                  `-bash,16025
                      `-python,16076 py_logging.py
                          `-sh,16077 -c pstree -asp 16076
                              `-pstree,16078 -asp 16076

2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  Start of factorial(10)
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 0, toal is 0
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 1, toal is 0
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 2, toal is 0
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 3, toal is 0
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 4, toal is 0
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 5, toal is 0
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 6, toal is 0
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 7, toal is 0
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 8, toal is 0
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 9, toal is 0
2019-03-20 23:18:47,493-DEBUG-16076-MainProcess-  i is 10, toal is 0
2019-03-20 23:18:47,494-DEBUG-16076-MainProcess-  End of factorial(10)
0
2019-03-20 23:18:47,494-DEBUG-16076-MainProcess-  End of program
  

Как я мог понять основной процесс, основной для чего?

Комментарии:

1. Согласно docs.python.org/2/library/logging.html#logrecord-attributes , это имя процесса (если доступно), как называется ваша основная программа (с идентификатором 16076), если вы хотите отобразить имя модуля python, попробуйте %(module)s

2. Кажется, это имя процесса, когда вы используете модуль многопроцессорной обработки ( docs.python.org/2/library/multiprocessing.html )

Ответ №1:

processName Атрибут извлекается с помощью multiprocessing.current_process().name . Это "MainProcess" для основного процесса (это все, что у вас будет, если вы не используете multiprocessing модуль). Для дочерних процессов, запускаемых multiprocessing , имя для нового процесса может быть указано при создании Process объекта, и по умолчанию это будет «Process», за которым следуют некоторые цифры, которые зависят от того, сколько дочерних процессов вы создали.