Possible Duplicate:
Multiprocessing launching too many instances of Python VM
I am trying python 2.6 multiprocessing module with this simple code snippet.
from multiprocessing import Pool
p = Pool(5)
def f(x):
return x*x
print p.map(f, [1,2,3])
But this code cause my OS stopped responding. It looks like the CPU is too busy. What's wrong with my code?
BTW : it seems that multiprocessing module is a bit dangerous. I had to restart my computer.
Common research programming languages use only one processor The “multi” in multiprocessing refers to the multiple cores in a computer's central processing unit (CPU). Computers originally had only one CPU core or processor, which is the unit that makes all our mathematical calculations possible.
Only one process can acquire the lock at a time, and then once acquired, blocks and then reenters the same lock again to report the done message via the report() function.
Both multithreading and multiprocessing allow Python code to run concurrently. Only multiprocessing will allow your code to be truly parallel. However, if your code is IO-heavy (like HTTP requests), then multithreading will still probably speed up your code.
We can check if a process is alive via the multiprocessing. Process. is_alive() method.
You aren't protecting the entry point at all, so each subprocess is trying to start the same map
call and so on (into infinity!). Try the following:
if __name__ == "__main__":
print p.map(f, [1,2,3])
See this section of the module's documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With