example.py 871 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import cProfile
  2. # @profile
  3. def is_prime(num):
  4. for factor in range(2, int(num ** 0.5) + 1):
  5. if num % factor == 0:
  6. return False
  7. return True
  8. class PrimeIter:
  9. def __init__(self, total):
  10. self.counter = 0
  11. self.current = 1
  12. self.total = total
  13. def __iter__(self):
  14. return self
  15. def __next__(self):
  16. if self.counter < self.total:
  17. self.current += 1
  18. while not is_prime(self.current):
  19. self.current += 1
  20. self.counter += 1
  21. return self.current
  22. raise StopIteration()
  23. @profile
  24. def eat_memory():
  25. items = []
  26. for _ in range(1000000):
  27. items.append(object())
  28. return items
  29. def main():
  30. eat_memory()
  31. # list(PrimeIter(1000))
  32. # cProfile.run('list(PrimeIter(10000))')
  33. if __name__ == '__main__':
  34. main()