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ď č. 1fronty
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.