Message367522
Thank you for having looked into the problem.
To be more specific, I don't generally mix threads with multiprocessing, but it's a situation where there is one global and hidden consumer thread listening to a queue for non-blocking logging.
Actually, I think the problem is reproducible using the QueueListener provided in "logging.handlers". The following snippet is inspired by this part of the documentation: https://docs.python.org/3/howto/logging-cookbook.html#dealing-with-handlers-that-block
----------------------
import logging
import multiprocessing
import queue
from logging.handlers import QueueHandler, QueueListener
if __name__ == "__main__":
que = multiprocessing.Queue()
queue_handler = QueueHandler(que)
handler = logging.StreamHandler()
listener = QueueListener(que, handler)
root = logging.getLogger()
root.addHandler(queue_handler)
listener.start()
for i in range(10000):
root.warning('Look out!')
p = multiprocessing.Process(target=lambda: None)
p.start()
p.join()
print("Not hanging yet", i)
listener.stop() |
|
Date |
User |
Action |
Args |
2020-04-28 12:23:22 | Delgan | set | recipients:
+ Delgan, pitrou, vstinner |
2020-04-28 12:23:22 | Delgan | set | messageid: <1588076602.43.0.765193823856.issue40399@roundup.psfhosted.org> |
2020-04-28 12:23:22 | Delgan | link | issue40399 messages |
2020-04-28 12:23:21 | Delgan | create | |
|