under test, not sure no errors
This commit is contained in:
0
ixformer_sdk/testing/__init__.py
Normal file
0
ixformer_sdk/testing/__init__.py
Normal file
37
ixformer_sdk/testing/memory_monitor.py
Normal file
37
ixformer_sdk/testing/memory_monitor.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from psutil import Process
|
||||
|
||||
|
||||
def get_current_memory(pid=None):
|
||||
return Process(pid).memory_full_info()
|
||||
|
||||
|
||||
class MemoryMonitorContext(object):
|
||||
def __init__(self, pid=None):
|
||||
self._pid = pid
|
||||
|
||||
self.reset()
|
||||
|
||||
def __enter__(self):
|
||||
self._enter_memory = self._get_used_memory()
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
self._exit_memory = self._get_used_memory()
|
||||
return self
|
||||
|
||||
def _get_used_memory(self) -> float:
|
||||
mem = get_current_memory(self._pid)
|
||||
return mem.uss
|
||||
|
||||
def reset(self):
|
||||
self._enter_memory = -1
|
||||
self._exit_memory = -1
|
||||
|
||||
def delta(self) -> float:
|
||||
if self._enter_memory < 0:
|
||||
raise RuntimeError("Please using context manager to wrap your code.")
|
||||
|
||||
if self._exit_memory < 0:
|
||||
return self._get_used_memory() - self._enter_memory
|
||||
|
||||
return self._exit_memory - self._enter_memory
|
||||
Reference in New Issue
Block a user