input: Write a function to optimize the Python algorithm for finding the greatest 2 numbers from a 10000 integers list. The function should return a tuple containing the two greatest numbers from the list. If the list is empty, it should return `None`.
  
  def get_greatest_2(items):
      if len(items) == 0:
          return None
      max1 = max2 = float('-inf')
      for item in items:
          if item > max1:
              max1, max2 = item, max1
          elif item > max2:
              max2 = item
      return max1, max2
  
  assert get_greatest_2([1, 5, 3, 7, 4, 7, 8, 9, 2, 10, 6, 8]) == (10, 9)
  assert get_greatest_2([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) == (10, 9)
  assert get_greatest_2([10, 1, 1, 1, 1, 1, 1, 1, 1, 1]) == (10, 1)
  assert get_greatest_2([]) == None
  assert get_greatest_2([9, 8, 7, 6, 5, 4, 3, 2, 1]) == (9, 8)
output: def get_greatest_2(items):
      if len(items) == 0:
          return None
      max1 = max2 = float('-inf')
      for item in items:
          if item > max1:
              max1, max2 = item, max1
          elif item > max2:
              max2 = item
      return max1, max2