在Python中在不同核心上运行方法
有没有简单的方法让两个方法,比如说MethodA()和MethodB()在两个不同的核心上运行?我不是说两个不同的线程。我是在Windows系统上运行,但我想知道这种方法是否可以在其他平台上也适用。
补充一下:那关于
http://docs.python.org/dev/library/multiprocessing.html和parallel python呢?
4 个回答
0
假设你使用的是CPython(这个是Python的标准版本),那么答案是不可以,原因是有一个叫做全局解释器锁的东西。在CPython中,线程主要是在需要处理很多输入输出的时候使用(一个线程在等待,另一个线程在进行计算)。
8
你需要使用独立的进程(因为常常提到的全局解释器锁GIL)。这里有一个叫做 multiprocessing模块 可以帮助你。
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()