Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Mengendalikan Pembalakan dalam Aplikasi Python Berbilang Pemprosesan?
Pelogam Berbilang Pemprosesan dalam Python
Apabila menggunakan modul pemproses berbilang Python, adalah penting untuk mempertimbangkan amalan pengelogan untuk mengelakkan ralat yang disebabkan oleh berbilang proses menulis ke pemegang fail yang sama secara serentak. Secara lalai, logger multiprocessing-aware yang disediakan oleh mp.get_logger() memastikan mekanisme penguncian yang betul dalam sys.stderr.
Walau bagaimanapun, modul yang tidak multiprocessing-aware mungkin memerlukan pengubahsuaian untuk menggunakan pengelogan multiprocessing-aware. Untuk mengelakkan perubahan ini, pertimbangkan pendekatan alternatif:
Pengendali Pengelogan Tersuai
Satu pendekatan ialah mencipta pengendali log tersuai yang menghantar log ke proses induk melalui paip. Ini membolehkan modul menggunakan modul pengelogan standard manakala proses induk mengendalikan pengelogan sebenar. Berikut ialah pelaksanaan:
<code class="python">from logging.handlers import RotatingFileHandler import multiprocessing, threading, logging, sys, traceback class MultiProcessingLog(logging.Handler): def __init__(self, name, mode, maxsize, rotate): logging.Handler.__init__(self) self._handler = RotatingFileHandler(name, mode, maxsize, rotate) self.queue = multiprocessing.Queue(-1) t = threading.Thread(target=self.receive) t.daemon = True t.start()</code>
Pengendali menerima rekod log daripada proses anak dan menulisnya ke fail menggunakan pengendali fail yang disediakan. Ini memastikan pengelogan berpusat tanpa perlu membuat perubahan pada modul bergantung.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Pembalakan dalam Aplikasi Python Berbilang Pemprosesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!