46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
|
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)
|