2014-01-21 38 views
1

以下代码似乎是按顺序而不是并发执行的。 它只使用一个CPU内核。 有没有办法让它使用多个内核或在线程之间切换内容? (我希望它可以工作就像在Java线程类。)如何在python中充分利用带有线程的CPU核心2

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

回答

4

线程不能利用在Python多个内核。过程可以。

multiprocessing是一个程序包,它支持使用类似于线程模块的 API的产卵进程。多处理包 提供本地和远程并发,通过使用子进程而不是线程有效地侧移全局解释器锁。 由于这个原因,多处理模块允许编程人员在给定机器上充分利用多个处理器来充分利用 。它运行在Unix 和Windows上。

点击here了解更多信息