I am a bitt struggled with multiprocessing philosophy in Python. To test my knowledge I thought of a multiprocessed programm that computes the prime decomposition of an integer. It goes as follows. Put the integer in a queue. I then have a function that dequeue and search for a (prime) divisor of it. If one is found, the complementary integer is put back in the queue. How can I make this work. For the moment I have this :
import multiprocessing as mp def f(queue, decomp): x = queue.get() prime = True for i in range(2, x): if (x % i) == 0: decomp.put(i) prime = False queue.put(x // i) break if prime: decomp.put(x) class Num: def __init__(self, n): self.queue = mp.Queue() self.queue.put(n) self.decomposition = mp.Queue() def run(self): with mp.Pool(4) as pool: pool.apply_async(f, (self.queue, self.decomposition)) It raises
RuntimeError: Queue objects should only be shared between processes through inheritance What is the standard way to make this ? (I know there may be better way to give the prime decomposition)
Manager?