2009-11-26 70 views

回答

8

你必须使用单独的进程(因为经常提到的GIL)。 multiprocessing module在这里提供帮助。

from multiprocessing import Process 
from somewhere import A, B 
if __name__ == '__main__': 
    procs = [ Process(target=t) for t in (A,B) ] 

    for p in procs: 
     p.start() 

    for p in procs: 
     p.join() 
0

假设您使用CPython(参考实现),由于Global Interpreter Lock,答案是。在CPython中,线程主要用于有很多IO(一个线程等待,另一个执行计算)的情况。

0

通常,运行不同的线程是在多核上运行的最佳可移植方式。当然,在Python中,全局解释器锁使得这是一个有争议的问题 - 一次只有一个线程会取得进展。

0

由于全局解释器锁定,Python程序一次只能运行一个线程。如果你想要真正的多核Python编程,你可以看看Jython(它可以访问JVM的线程)或者拥有类似Go的通道和tasklet的精彩stackless

相关问题