Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python pool doesn't work

I'm trying to use multithreading and in order to keep it simple at first, i'm running the following code:

import multiprocessing as mp

pool = mp.Pool(4)

def square(x):

    return x**2

results=pool.map(square,range(1,20))

As i understand, results should be a list containig the squares from 1 to 20. However, the code does not seem to terminate.(doing the same without pool finishes in a blink, this ran for several minutes, before i stopped it manually).

Additional information: task manager tells me, that the additional python processes have been launched and are running, but are using zero % of my cpu; still other unrelated processes like firefox skyrocket in their cpu usage, while the programm is running. I'm using windows 8 and a i5-4300U cpu (pooling to 2 instead of 4 doesn't help either)

What am i doing wrong? Are there any good ressources on the Pool class, which could help me understand what is wrong with my code?

like image 562
axioman Avatar asked Feb 28 '26 13:02

axioman


1 Answers

Code with pool initialization should be inside __name__ == "__main__" as multiprocessing imports the module each time to spawn a new process.

import multiprocessing as mp

def square(x):
    return x**2

if __name__ == '__main__':
    pool = mp.Pool(4)
    results=pool.map(square,range(1,20))
like image 128
Vader Avatar answered Mar 03 '26 03:03

Vader



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!