在Python中在不同核心上运行方法

0 投票
4 回答
506 浏览
提问于 2025-04-15 16:25

有没有简单的方法让两个方法,比如说MethodA()和MethodB()在两个不同的核心上运行?我不是说两个不同的线程。我是在Windows系统上运行,但我想知道这种方法是否可以在其他平台上也适用。

补充一下:那关于

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

4 个回答

0

假设你使用的是CPython(这个是Python的标准版本),那么答案是不可以,原因是有一个叫做全局解释器锁的东西。在CPython中,线程主要是在需要处理很多输入输出的时候使用(一个线程在等待,另一个线程在进行计算)。

0

由于全局解释器锁的存在,Python程序一次只能运行一个线程。如果你想要真正的多核Python编程,可以考虑一下Jython(它可以使用JVM的线程),或者很棒的stackless,它有类似于Go的通道和任务。

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

撰写回答