This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author Delgan
Recipients Delgan, pitrou, vstinner
Date 2020-04-28.12:23:21
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1588076602.43.0.765193823856.issue40399@roundup.psfhosted.org>
In-reply-to
Content
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()
History
Date User Action Args
2020-04-28 12:23:22Delgansetrecipients: + Delgan, pitrou, vstinner
2020-04-28 12:23:22Delgansetmessageid: <1588076602.43.0.765193823856.issue40399@roundup.psfhosted.org>
2020-04-28 12:23:22Delganlinkissue40399 messages
2020-04-28 12:23:21Delgancreate