Поддерживает ли ведение журнала Python многопроцессорность?Python

Программы на Python
Anonymous
Поддерживает ли ведение журнала Python многопроцессорность?

Сообщение Anonymous »

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

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

Код: Выделить всё

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 секунд после запуска), чтобы увеличить вероятность конфликта. Но конфликта вообще нет.

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

Подробнее здесь: https://stackoverflow.com/questions/479 ... processing

Вернуться в «Python»