usu*_* me 8 python python-2.7 python-multiprocessing
我还没有找到一种很好的方法来监视Python脚本的内存使用情况multiprocessing.更具体地说,我这样说:
import time
biglist = range(pow(10, 7))
time.sleep(5)
Run Code Online (Sandbox Code Playgroud)
内存使用量为1.3 GB,由两者/usr/bin/time -v和top.但现在,说我这样做:
import time
from multiprocessing import Pool
def worker(x):
biglist = range(pow(10, 7))
time.sleep(5)
return
Pool(5).map(worker, range(5))
Run Code Online (Sandbox Code Playgroud)
现在top报告5 x 1.3 GB,这是正确的.但/usr/bin/time -v仍然报告1.3 GB,这是没有意义的.如果它正在测量父进程的消耗,那么应该说0.如果它正在测量父进程和子进程,那么它应该报告5 x 1.3 GB.为什么说1.3 GB?现在让我们尝试copy-on-write:
import time
from multiprocessing import Pool
biglist = range(pow(10, 7))
def worker(x):
time.sleep(5)
return
Pool(5).map(worker, range(5))
Run Code Online (Sandbox Code Playgroud)
现在/usr/bin/time -v报告1.3 GB(再次),这是正确的.但top报告6 x 1.3 GB,这是不正确的.使用copy-on-write,它应该只报告1.3 GB.
如何使用multiprocessing?可靠地监视Python脚本的内存使用情况?
| 归档时间: |
|
| 查看次数: |
976 次 |
| 最近记录: |