有没有什么简单的方法可以让2个方法,比如MethodA()和MethodB()运行在2个不同的内核上?我不是说2个不同的线程。我在Windows中运行,但我想知道是否可以独立于平台。python上的不同内核上运行方法
编辑:又是怎么回事
http://docs.python.org/dev/library/multiprocessing.html 和 parallel python?
有没有什么简单的方法可以让2个方法,比如MethodA()和MethodB()运行在2个不同的内核上?我不是说2个不同的线程。我在Windows中运行,但我想知道是否可以独立于平台。python上的不同内核上运行方法
编辑:又是怎么回事
http://docs.python.org/dev/library/multiprocessing.html 和 parallel python?
你必须使用单独的进程(因为经常提到的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()
假设您使用CPython(参考实现),由于Global Interpreter Lock,答案是否。在CPython中,线程主要用于有很多IO(一个线程等待,另一个执行计算)的情况。
通常,运行不同的线程是在多核上运行的最佳可移植方式。当然,在Python中,全局解释器锁使得这是一个有争议的问题 - 一次只有一个线程会取得进展。