Remove deprecated 2D_/3D_ prefix
[blender-addons.git] / ant_landscape / stats.py
blobb217a7b077236c3c9fceb685f45c96b12edc3daa
1 # SPDX-License-Identifier: GPL-2.0-or-later
3 from time import time
5 try:
6 import psutil
7 # print('psutil available')
8 psutil_available = True
9 except ImportError:
10 psutil_available = False
13 class Stats:
14 def __init__(self):
15 self.memstats_available = False
16 if psutil_available:
17 self.process = psutil.Process()
18 self.memstats_available = True
19 self.reset()
21 def reset(self):
22 self.lasttime = self._gettime()
23 self.lastmem = self._getmem()
24 self.basemem = self.lastmem
25 self.maxmem = 0
26 self.elapsedtime = 0
28 def _gettime(self):
29 """return the time in seconds used by the current process."""
30 if psutil_available:
31 """ Handle psutil API change. """
32 if hasattr(self.process, "get_cpu_times"):
33 m = self.process.get_cpu_times()
34 else:
35 m = self.process.cpu_times()
36 return m.user + m.system
37 return time()
39 def _getmem(self):
40 """return the resident set size in bytes used by the current process."""
41 if psutil_available:
42 """ Handle psutil API change. """
43 if hasattr(self.process, "get_memory_info"):
44 m = self.process.get_memory_info()
45 else:
46 m = self.process.memory_info()
47 return m.rss
48 return 0
50 def time(self):
51 """return the time since the last call in seconds used by the current process."""
52 old = self.lasttime
53 self.lasttime = self._gettime()
54 self.elapsedtime = self.lasttime - old
55 return self.elapsedtime
57 def memory(self):
58 """return the maximum resident set size since the first call in bytes used by the current process."""
59 self.lastmem = self._getmem()
60 d = self.lastmem - self.basemem
61 if d > self.maxmem:
62 self.maxmem = d
63 return self.maxmem