1

The following code seems to be executed sequentially rather than concurrently. And it only made use of one CPU core. Is there a way to make it use multiple cores or switch content between threads? (I hope it could work like Thread class in java.)

import threading 

def work(s) :
    for i in range(100) :
        print s
        for j in range (12345678) :
            pass

a = []
for i in range(3) :
    thd = threading.Thread(target = work('#'+str(i)))
    a.append(thd)

for k in a : k.start()
for k in a : k.join()

print "Ended."

2 Answers 2

4

Threads cannot utilize multiple cores in Python. Processes however can.

multiprocessing is a package that supports spawning processes using an API similar to the threading module. The multiprocessing package offers both local and remote concurrency, effectively side-stepping the Global Interpreter Lock by using subprocesses instead of threads. Due to this, the multiprocessing module allows the programmer to fully leverage multiple processors on a given machine. It runs on both Unix and Windows.

Click here for more information

Sign up to request clarification or add additional context in comments.

Comments

0

A friend of mine asked me this once. In your case, just use multiprocessing.process and that will use all your cores.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.