это сводит меня с ума. Я работаю с пулом многопроцессорной обработки python3 размером 3 и создаю журнал для каждого процесса. Создаются только первые 3 лога !!! что мне не хватает?
from time import sleep
import logging, os, multiprocessing as mp
def do_it(proc_num):
log_file = f'{proc_num}.log'
print(f"start {proc_num} {os.getpid()} {log_file}")
logging.basicConfig(filename=log_file, level=logging.INFO)
try:
for iter in range(5):
sleep(1)
logging.info(f"{proc_num}: hello {iter}")
finally:
print(f"finalizing {proc_num}")
logging.shutdown()
logger = logging.getLogger()
logger.handlers[0].flush()
sleep(3)
if __name__ == '__main__':
pool = mp.Pool(3)
pool.map(do_it, [1, 2, 3, 4, 5, 6, 7])
pool.close()
и результат:
ls *.log
1.log 2.log 3.log
wat?!?!
ПРИМЕЧАНИЕ: НЕ то же самое, что Как мне войти при использовании многопроцессорной обработки в Python? , потому что я ХОЧУ отдельный файл журнала для каждого процесса.