Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python resource.getrusage始终生成相同的结果_Python_Concurrent.futures - Fatal编程技术网

Python resource.getrusage始终生成相同的结果

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__

我正试图想出我自己的记忆测量装饰。就我而言,像内存分析器这样的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__(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)
。有什么我遗漏的吗