Why can I pass an instance method to multiprocessing.Process, but not a multiprocessing.Pool?

I am trying to write an application that applies a function concurrently with a multiprocessing.Pool. I would like this function to be an instance method (so I can define it differently in different subclasses). This doesn’t seem to be possible; as I have learned elsewhere, apparently bound methods can’t be pickled. So why does starting a multiprocessing.Process with a bound method as a target work? The following code:

Python Multiprocess Pool. How to exit the script when one of the worker process determines no more work needs to be done?

mp.set_start_method('spawn') total_count = Counter(0) pool = mp.Pool(initializer=init, initargs=(total_count,), processes=num_proc) pool.map(part_crack_helper, product(seed_str, repeat=4)) pool.close() pool.join() So I have a pool of worker process that does some work. It just needs to find one solution. Therefore, when one of the worker processes finds the solution, I want to stop everything. One way I thought of was just … Read more