Uyas
Uyas

Reputation: 83

How to make full use of CPU cores with threading in python 2

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."

Upvotes: 1

Views: 580

Answers (2)

Nafiul Islam
Nafiul Islam

Reputation: 82600

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

Upvotes: 0

Jakob Bowyer
Jakob Bowyer

Reputation: 34708

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

Upvotes: 4

Related Questions