Code: Select all
from multiprocessing import Pool
def some_function(job_dict: dict) -> dict:
# some function
class RunJobs:
def __init__(self, jobs: list[dict], threads=1):
self.jobs, self.threads, self.state = jobs, threads, []
def _run_sequentially(self):
for job in self.jobs:
self.state.append(some_function(job))
def _run_multithreaded(self):
pool = Pool(self.threads)
job_queue = []
for job in self.jobs:
job_queue.append(pool.apply_async(some_function, args=(job)))
pool.close()
pool.join()
for job in job_queue:
self.state.append(job.get())
def run(self):
try:
if self.threads == 1:
self._run_sequentially()
else:
self._run_multithreaded()
except KeyInterrupt:
print(self.state)