/ / Multiprocesné protokolovanie: Blokovať vs Queue - python, protokolovanie, multiprocesing

Zaznamenávanie viacerých procesov: Zablokovanie vs Queue - python, protokolovanie, multiprocesing

Plánoval som ho použiť logging.handler.RotatingFileHandler, a používam protokolovanie z viacerých procesov multiprocessing.

Videl som veľa odporúčaní na použitie multiprocessing.Queue a proces poslucháča na serializáciu zaznamenávania.

otázka

Aká je výhoda používania frontu nad funkciami záznamu v rámci mutexu s multiprocessing.Lock? Zdá sa, že väčšina odporúčaní (ak nie všetci) smerovala k fronte, ale nevidím žiadne skutočné vysvetlenia, prečo.

odpovede:

1 pre odpoveď č. 1

fronty

Výhodou používania frontu je, že protokolovanie hovorov vašich procesov nie je blokované. Okrem toho fronta (s jedným pracovným vláknom) vedie v súbore denníka príkazy na generovanie objednávok.


zámky

Neblokujúce zámky

Ak chcete použiť zámky s blokovanímsprávanie, musí byť zámok získaný v režime bez blokovania. Na tento účel musia byť denníky zaznamenávané každým podprocesom. To pridáva zbytočnú zložitosť a môže spôsobiť oneskorenie pred uložením správ do denníka, čo vedie k nesprávnemu poradiu správ.

Blokovanie zámkov

Ak chcete použiť uzamknutie v režime blokovania, potomvaše podprocesy nepotrebujú miestne fronty, keď získate zámok. Ale potom to blokuje spustenie kódu. Toto je zvyčajne nežiaduce správanie, pretože sa očakáva, že zaznamenávanie bude veľmi rýchle.