import queue from collections import namedtuple from datetime import datetime, timedelta from multiprocessing import Process, Queue, freeze_support import _ed_lrr 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 def callback(self, state): self.queue.put({"status": state}) def run(self): res = _ed_lrr.preprocess(*self.args, **self.kwargs) self.queue.put({"result": res}) 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)