input: Write a function to optimize a Python algorithm to find the greatest 2 numbers from a list of 10000 integers. The function should take one argument, which is the list of integers, and return a tuple containing the two greatest numbers in descending order.
  
  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, 9, 8, 7, 6, 5, 4, 3, 2, 1])==(10, 9)
  assert get_greatest_2([9, 8, 7, 6, 5, 4, 3, 2, 1, 9])==(9, 9)
  assert get_greatest_2([])==(None, None)
output: def get_greatest_2(lst):
      if not lst:
          return (None, None)
      first = second = float('-inf')
      for num in lst:
          if num > first:
              second = first
              first = num
          elif num > second:
              second = num
      return (first, second)