Обработчик выполняет всю запись файла из родительского процесса и использует только один поток для получения сообщений, переданных от дочерних процессов.

казали, что ведение журнала не может быть использовано в многопроцессорной. Вы должны выполнить управление параллелизмом в случае, если многопроцессорность испортит журнал.

Но я сделал несколько тестов, кажется, нет проблем с использованием входа в многопроцессорную

import time
import logging
from multiprocessing import Process, current_process, pool


# setup log
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename='/tmp/test.log',
                    filemode='w')


def func(the_time, logger):
    proc = current_process()
    while True:
        if time.time() >= the_time:
            logger.info('proc name %s id %s' % (proc.name, proc.pid))
            return



if __name__ == '__main__':

    the_time = time.time() + 5

    for x in xrange(1, 10):
        proc = Process(target=func, name=x, args=(the_time, logger))
        proc.start()

Как видно из кода.

Я намеренно позволил подпроцессу записывать журнал в тот же момент (5 секунд после запуска), чтобы увеличить вероятность конфликта. Но конфликта нет вообще.

Итак, мой вопрос: можем ли мы использовать ведение журнала в многопроцессорной среде? Почему так много постов сказать не можем?

Ответы на вопрос(3)

Ваш ответ на вопрос