簡體   English   中英

在多個內核上運行python程序

[英]Run a python program on multiple cores

我是多核編程的新手。 以下程序僅使用一個內核。 如何使它在多個內核上運行(我有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()

簡單:

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可能會有所幫助,並且全局解釋器鎖會降低速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM