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

在python的不同内核上运行方法,python,multicore,Python,Multicore,有没有什么简单的方法可以让MethodA()和MethodB()在两个不同的内核中运行?我不是说两条不同的线。我在Windows中运行,但我想知道是否可以独立于平台 编辑:那怎么办 和 ?假设您使用CPython(参考实现),则答案是否,因为。在CPython中,线程主要用于IO较多的情况(一个线程等待,另一个线程进行计算)。一般来说,运行不同的线程是在多个内核上运行的最佳可移植方式。当然,在Python中,全局解释器锁使这一点变得毫无意义——一次只有一个线程会取得进展。由于全局解释器锁,Py

有没有什么简单的方法可以让MethodA()和MethodB()在两个不同的内核中运行?我不是说两条不同的线。我在Windows中运行,但我想知道是否可以独立于平台

编辑:那怎么办


假设您使用CPython(参考实现),则答案是,因为。在CPython中,线程主要用于IO较多的情况(一个线程等待,另一个线程进行计算)。

一般来说,运行不同的线程是在多个内核上运行的最佳可移植方式。当然,在Python中,全局解释器锁使这一点变得毫无意义——一次只有一个线程会取得进展。

由于全局解释器锁,Python程序一次只能运行一个线程。如果您想要真正的多核Python编程,您可以研究(它可以访问JVM的线程)或brilliant,它具有类似通道和微线程的功能。

您必须使用单独的进程(因为经常提到的GIL)。警察是来帮忙的

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()