I have the following code:
class RepeatTimer(Timer):""" Extending the threading.Timer class to execute functions at fixed intervals.""" def run(self): while not self.finished.wait(self.interval): self.function(*self.args, **self.kwargs)def parallel_process(mp, arguments, cb_fn): main_process = multiprocessing.Process(target=mp, args=[arguments, cb_fn]) side_process = RepeatTimer(30, generate_info) final_process = multiprocessing.Process(target=create_final) main_process.start() side_process.start() main_process.join() side_process.cancel() final_process.start() final_process.join()
mp
, generate_info
, and create_final
are my functions being used. I wish to execute mp
and generate_info
concurrently and then execute create_final
after their completion.
mp
and generate_info
run concurrently if I don't use the create_final
function, but after I use the function, it also starts running while the other two are running. I read about it and got to know join()
method will only block the main process, and not other multiprocessing functions.
What can I do to get my desired output? Even using concurrent.futures
also throws the same error.