-
-
Save y0no/09826e83e643bc0f98c2 to your computer and use it in GitHub Desktop.
Circuits memory leak
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import resource | |
import matplotlib.pyplot as plt | |
from circuits import Component, Debugger, Event | |
class dummy(Event): | |
"""Dummy event""" | |
class value(Event): | |
"""Graph value event""" | |
def __init__(self, event_cnt, mem): | |
super(value, self).__init__(event_cnt, mem) | |
class graph(Event): | |
"""Event that request graphing""" | |
class MemoryLeakTest(Component): | |
nb_test = 1000 | |
def init(self, *args, **kwargs): | |
self.start_mem = self.get_mem() | |
self.values = [self.start_mem] | |
def started(self, *args, **kwargs): | |
for cnt in range(self.nb_test): | |
yield self.call(dummy()) | |
self.values.append(self.get_mem()) | |
plt.plot(self.values) | |
plt.savefig('call.png') | |
print('Call count: %d' % self.nb_test) | |
print('Memory used: %f' % (self.get_mem() - self.start_mem)) | |
raise SystemExit(0) | |
def get_mem(self): | |
return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss | |
def dummy(self): | |
return 1 | |
MemoryLeakTest().run() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import resource | |
import matplotlib.pyplot as plt | |
from circuits import Component, Debugger, Event | |
class dummy(Event): | |
"""Dummy event""" | |
class value(Event): | |
"""Graph value event""" | |
def __init__(self, event_cnt, mem): | |
super(value, self).__init__(event_cnt, mem) | |
class graph(Event): | |
"""Event that request graphing""" | |
class MemoryLeakTest(Component): | |
nb_test = 1000 | |
def init(self, *args, **kwargs): | |
self.start_mem = self.get_mem() | |
self.values = [self.start_mem] | |
def started(self, *args, **kwargs): | |
for cnt in range(self.nb_test): | |
self.fire(dummy()) | |
while len(self): | |
self.values.append(self.get_mem()) | |
yield | |
plt.plot(self.values) | |
plt.savefig('fire.png') | |
print('Call count: %d' % self.nb_test) | |
print('Memory used: %f' % (self.get_mem() - self.start_mem)) | |
raise SystemExit(0) | |
def get_mem(self): | |
return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss | |
def dummy(self): | |
return 1 | |
MemoryLeakTest().run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment