Welcome to mirror list, hosted at ThFree Co, Russian Federation.

stats.py « ant_landscape - git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a5053465654b7a373115a1900c5abd7a39a309e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from time import time

try:
  import psutil
  print('psutil available')
  psutil_available=True
except ImportError:
  psutil_available=False

class Stats:
  def __init__(self):
    self.memstats_available = False
    if psutil_available:
      self.process=psutil.Process()
      self.memstats_available = True
    self.reset()
    
  def reset(self):
    self.lasttime=self._gettime()
    self.lastmem=self._getmem()
    self.basemem = self.lastmem
    self.maxmem=0
    self.elapsedtime=0

  def _gettime(self):
    """return the time in seconds used by the current process."""
    if psutil_available:
      m=self.process.get_cpu_times()
      return m.user+m.system
    return time()

  def _getmem(self):
    """return the resident set size in bytes used by the current process."""
    if psutil_available:
      m=self.process.get_memory_info()
      return m.rss
    return 0

  def time(self):
    """return the time since the last call in seconds used by the current process."""
    old = self.lasttime
    self.lasttime = self._gettime()
    self.elapsedtime = self.lasttime-old
    return self.elapsedtime
    
  def memory(self):
    """return the maximum resident set size since the first call in bytes used by the current process."""
    self.lastmem = self._getmem()
    d = self.lastmem - self.basemem
    if d>self.maxmem:
      self.maxmem = d
    return self.maxmem