マルチプロセッシングでロギングを使用できないと言われました。マルチプロセッシングがログを混乱させる場合に備えて、並行性制御を行う必要があります。ログを使用しても問題はあなたがコードから見ることができるようにPythonロギングはマルチプロセッシングをサポートしていますか?
import time
import logging
from multiprocessing import Process, current_process, pool
# setup log
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='/tmp/test.log',
filemode='w')
def func(the_time, logger):
proc = current_process()
while True:
if time.time() >= the_time:
logger.info('proc name %s id %s' % (proc.name, proc.pid))
return
if __name__ == '__main__':
the_time = time.time() + 5
for x in xrange(1, 10):
proc = Process(target=func, name=x, args=(the_time, logger))
proc.start()
マルチプロセッシングではありませんように
しかし、私はいくつかのテストをしたが、それはそうです。
私は故意に、プロセスと競合の可能性を高めるために、同じ時刻(開始後5秒)にログを書き込ませます。しかし、全く矛盾はありません。
私はマルチプロセッシングでのログを使用することができますか? なぜ多くの記事は私たちができないと言っているのですか?
。フラスコのようなWebフレームワークは、uwsgiまたはnginxによってホストされている場合、複数のワーカーで実行されます。その場合、複数のプロセスが1つのログファイルに書き込む可能性があります。それに問題はありますか? –
@KramerLi:私は私の答えの新しいセクションの下であなたの質問に答えました – hansaplast