        if self.latest_time_msg:
          self.fetch_orbits(self.latest_time_msg + SECS_IN_MIN)
          time.sleep(0.1)
  
    def fetch_orbits(self, t: GPSTime):
      if t not in self.astro_dog.orbit_fetched_times:
        cloudlog.info(f"Start to download/parse orbits for time {t.as_datetime()}")
        start_time = time.monotonic()
        self.astro_dog.get_orbit_data(t, only_predictions=True)
        cloudlog.info(f"Done parsing orbits. Took {time.monotonic() - start_time:.2f}s")
 
</s> remove import threading
 </s> add  </s> remove from typing import List
 </s> add from multiprocessing import Process, Queue
from typing import List, Optional
  def fetch_orbits(self, t: GPSTime, block):
        if self.latest_time_msg:
          self.fetch_orbits(self.latest_time_msg + SECS_IN_MIN)
          time.sleep(0.1)
  
  def fetch_orbits(self, t: GPSTime, block):
      if t not in self.astro_dog.orbit_fetched_times:
        cloudlog.info(f"Start to download/parse orbits for time {t.as_datetime()}")
        start_time = time.monotonic()
        self.astro_dog.get_orbit_data(t, only_predictions=True)
        cloudlog.info(f"Done parsing orbits. Took {time.monotonic() - start_time:.2f}s")
keep keep keep keep replace keep keep keep keep keep
 Laikad: Use process for parsing orbits (#24769)

* Use Process instead of Thread to fetch orbits

* small refactor

* Cleanup 
selfdrive/locationd/laikad.py