Any ideas on how can I get forked processes to log to main process ?
My setup is like this:
from itertools import repeat
from concurrent.futures import ProcessPoolExecutor
logger = logging.getLogger(__name__)
def worker_process(i, logger):
logger.info(f"{i}")
with ProcessPoolExecutor(max_workers=4) as executor:
logger.info("Starting")
executor.map(worker_process, range(5), repeat(logger))
CodePudding user response:
Your worker processes do log to the main thread.
You're not seeing any log output because the default log level for your logger
is higher than INFO
.
Set the logging to INFO
and you'll see output:
from itertools import repeat
from concurrent.futures import ProcessPoolExecutor
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def worker_process(i, logger):
logger.info(f"{i}")
with ProcessPoolExecutor(max_workers=4) as executor:
executor.map(worker_process, range(5), repeat(logger))
Result:
INFO:__main__:0
INFO:__main__:4
INFO:__main__:3
INFO:__main__:1
INFO:__main__:2