【问题标题】:Running methods on different cores on python在 python 上的不同内核上运行方法
【发布时间】:2010-12-20 17:02:58
【问题描述】:

是否有任何简单的方法可以制作 2 个方法,比如 MethodA() 和 MethodB() 在 2 个不同的内核中运行?我不是说2个不同的线程。我在 Windows 中运行,但我想知道是否可以独立于平台。

编辑:然后呢

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

【问题讨论】:

    标签: python multicore


    【解决方案1】:

    您必须使用单独的进程(因为经常提到的 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()
    

    【讨论】:

      【解决方案2】:

      假设您使用 CPython(参考实现),答案是 NO,因为 Global Interpreter Lock。在 CPython 中,线程主要用于有大量 IO 要做的时候(一个线程等待,另一个线程进行计算)。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          由于全局解释器锁,Python 程序一次只能运行一个线程。如果您想要真正的多核 Python 编程,您可以查看 Jython(它可以访问 JVM 的线程),或者出色的 stackless,它具有类似 Go 的通道和小任务。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-08-09
            • 2011-11-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-26
            • 1970-01-01
            相关资源
            最近更新 更多