有没有简单的方法来制作2个方法,假设MethodA()和MethodB()在2个不同的核心中运行?我不是指2个不同的线程。我在Windows中运行,但我想知道是否可以独立于平台。
编辑:那么
http://docs.python.org/dev/library/multiprocessing.html 和 parallel python?
答案 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)