ED_LRR/ed_lrr_gui/preprocess.py

46 lines
1.3 KiB
Python
Raw Normal View History

from multiprocessing import Process, Queue, freeze_support
import queue
from datetime import datetime, timedelta
import _ed_lrr
from collections import namedtuple
class Preprocessor(Process):
def __init__(self, *args, **kwargs):
super().__init__()
self.state = {}
self.queue = Queue()
self.daemon = True
self.args = args
self.kwargs = kwargs
self.kwargs["callback"] = self.callback
self.start()
def __iter__(self):
while self.is_alive():
try:
self.state.update(self.queue.get(True, 0.5))
yield self.state
except queue.Empty:
pass
while not self.queue.empty():
self.state.update(self.queue.get(True, 0.5))
yield self.state
def callback(self, state):
self.queue.put({"status": state})
def run(self):
_ed_lrr.preprocess(*self.args, **self.kwargs)
if __name__ == "__main__":
freeze_support()
r = Preprocessor(
r"D:\devel\rust\ED_LRR\dumps\systemsWithCoordinates.json",
r"D:\devel\rust\ED_LRR\dumps\bodies.json",
r"D:\devel\rust\ED_LRR\stars.csv",
)
for i, e in enumerate(r):
print(e)