Длительный поток без переполнения кола - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть работа над проектом над продолжительным скриптом Python без зависания или даже с ошибкой.Но память будет продолжать накапливаться, поэтому моя идея - использовать другой поток, чтобы каждые 30 секунд проверять использование свободной памяти на компьютере и сохранять информацию в файле журнала.

    def cpuInfo(self):
        memory = psutil.virtual_memory().free
        ...
        time.sleep(self.timeInterval)
        self.cpuInfo()

Но через несколько часов или несколько дней он столкнется с переполнением ставки.

RecursionError: maximum recursion depth exceeded in comparison
Call stack:
  File "/usr/lib/python3.6/threading.py", line 884, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "/home/x/memory.py", line 41, in cpuInfo
    self.cpuInfo()
  File "/home/x/memory.py", line 41, in cpuInfo
    self.cpuInfo()
  File "/home/x/memory.py", line 41, in cpuInfo
    self.cpuInfo()
  [Previous line repeated 976 more times]

Есть идеи решить ее или заставить ее работать бесконечно другим способом, если пользователь не прекратит его?

...