multiprocessing
を使用してPythonスクリプトのメモリ使用量を監視する良い方法が見つかりませんでした。具体的には、私はこれを行うと言う:/usr/bin/time -v
とtop
の両方によって測定されるようにPythonマルチプロセッシング - メモリ使用量を監視するには?
import time
biglist = range(pow(10, 7))
time.sleep(5)
メモリ使用量は、1.3ギガバイトです。しかし、今、私はこれを行うと言う:
import time
from multiprocessing import Pool
def worker(x):
biglist = range(pow(10, 7))
time.sleep(5)
return
Pool(5).map(worker, range(5))
今top
は正しいです5×1.3ギガバイトを、報告します。しかし/usr/bin/time -v
は依然として1.3GBを報告していますが、これは意味をなさないものです。親プロセスの消費量を測定している場合は、0とします。親と子供を測定する場合は、5 x 1.3 GBを報告する必要があります。なぜ1.3 GBと言われますか?今度は、コピー・オン・ライト試してみましょう:
import time
from multiprocessing import Pool
biglist = range(pow(10, 7))
def worker(x):
time.sleep(5)
return
Pool(5).map(worker, range(5))
今/usr/bin/time -v
が正しいれ、1.3ギガバイト(再び)を報告します。しかし、top
は6 x 1.3 GBを報告していますが、これは間違っています。コピーオンライトでは、1.3 GBしか報告しません。
multiprocessing
を使用して、Pythonスクリプトのメモリ使用量を確実に監視できますか?