在python上运行不同核心的方法

时间:2009-11-26 14:23:38

标签: python multicore

有没有简单的方法来制作2个方法,假设MethodA()和MethodB()在2个不同的核心中运行?我不是指2个不同的线程。我在Windows中运行,但我想知道是否可以独立于平台。

编辑:那么

http://docs.python.org/dev/library/multiprocessing.htmlparallel python

4 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

假设你使用CPython(参考实现),答案是 NO ,因为Global Interpreter Lock。在CPython中,线程主要用于需要执行大量IO的操作(一个线程等待,另一个执行计算)。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

由于全局解释器锁定,Python程序一次只运行一个线程。如果你想要真正的多核Python编程,你可以研究Jython(可以访问JVM的线程),或者有stackless的辉煌Go - 类似于通道和tasklet。 / p>