在多个内核上运行python程序

2024-09-27 00:14:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉多核编程。以下程序只使用一个核心。如何使它在多个核心上运行(我有4个核心)。在

simDict={}

def sim(outer,inner, ...):
    val= /*do some math*/
    simDict[...]=val

def foo():
   for outer in xrange(0, limit):
      for inner in xrange(outer, limit):
          sim(outer,inner, ...)
foo()

Tags: in程序核心forfoodef编程val
2条回答

简单:

from multiprocessing import Pool

p = Pool()

def do_inner(outer, limit):
    for inner in xrange(outer, limit):
        sim(outer, inner, ...)

def foo():
    p.map(do_inner, xrange(limit))

foo()

这将使用multiprocessing.Pool来创建一个工作进程池。在

我会用你的问题来解决问题。除非线程之间存在某种数据依赖关系,否则您将需要使用一些更高级的锁定机制,并且必须防止更多的线程陷阱。在

生产者/消费者概念:http://en.wikipedia.org/wiki/Producer-consumer_problem 仅供参考:http://docs.python.org/library/multiprocessing.html

multiprocessing可能有助于使用,而且在某些特定情况下,如果只使用线程,全局解释器锁也会减慢速度。在

相关问题 更多 >

    热门问题