Python resource.getrusage始终生成相同的结果
我正试图想出我自己的记忆测量装饰。就我而言,像内存分析器这样的libs不适合。 受此启发,我起草了以下代码Python resource.getrusage始终生成相同的结果,python,concurrent.futures,Python,Concurrent.futures,我正试图想出我自己的记忆测量装饰。就我而言,像内存分析器这样的libs不适合。 受此启发,我起草了以下代码 import time from concurrent.futures import ThreadPoolExecutor import resource from time import sleep def test(): a = [1] * (10 ** 7) time.sleep(3) class MemoryMonitor: def __init__
import time
from concurrent.futures import ThreadPoolExecutor
import resource
from time import sleep
def test():
a = [1] * (10 ** 7)
time.sleep(3)
class MemoryMonitor:
def __init__(self):
self.keep_measuring = True
def measure_usage(self):
max_usage = 0
while self.keep_measuring:
max_usage = max(
max_usage,
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
)
sleep(0.1)
return max_usage
if __name__ == '__main__':
func = test
with ThreadPoolExecutor() as executor:
monitor = MemoryMonitor()
mem_thread = executor.submit(monitor.measure_usage)
try:
fn_thread = executor.submit(func)
result = fn_thread.result()
finally:
monitor.keep_measuring = False
max_usage = mem_thread.result()
print("Peak memory usage for {}: {}".format(func.__name__, max_usage))
对我来说,奇怪的是,出于某种原因,它总是产生相同的最大使用量结果,无论我放置a=[1]*(10**7)
或a=[1]*(10**6)
,或a=[1]*(10**5)
。有什么我遗漏的吗