如何在python 2中充分利用带有线程的CPU核心

时间:2014-01-21 14:31:43

标签: python multithreading

以下代码似乎是顺序执行而不是并发执行。 它只使用一个CPU核心。 有没有办法让它在线程之间使用多个内核或切换内容? (我希望它可以像java中的Thread类一样工作。)

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 个答案:

答案 0 :(得分:4)

线程无法在Python中使用多个核心。然而,过程可以。

  

multiprocessing是一个使用a支持产生进程的包   API类似于线程模块。多处理包   提供本地和远程并发,有效地侧面步进   全局解释器锁通过使用子进程而不是线程。   因此,多处理模块允许程序员完全   利用给定计算机上的多个处理器。它可以在Unix上运行   和Windows。

点击here了解详情

答案 1 :(得分:0)

我的一个朋友曾经问过我一次。在您的情况下,只需使用multiprocessing.process即可使用所有内核。