Frage

Ich habe einfache Karten reduzieren Typ-Algorithmus, die ich in Python und nutzen mehrere Kerne implementieren möchten.

Ich habe irgendwo gelesen, dass Threads native Thread-Modul in 2.6 Sie nicht nutzen mehrere Kerne. ist das wahr?

Ich setzte es sogar stackless Python aber ich in seltsame Fehler bin immer [Update: eine schnelle Suche ergab, dass der Stapel weniger nicht mehr Kerne nicht erlaubt So sind ihre noch andere Alternativen?]

def Propagate(start,end):
print "running Thread with range: ",start,end
def maxVote(nLabels):
    count = {}
    maxList = []
    maxCount = 0
    for nLabel in nLabels:
        if nLabel in count:
            count[nLabel] += 1
        else:
            count[nLabel] = 1
    #Check if the count is max
        if count[nLabel] > maxCount:
            maxCount = count[nLabel];
            maxList = [nLabel,]
        elif count[nLabel]==maxCount:
            maxList.append(nLabel)
    return random.choice(maxList)        

for num in range(start,end):
    node=MapList[num]
    nLabels = [Label[k] for k in Adj[node]]
    if (nLabels!=[]):
        Label[node] = maxVote(nLabels)
    else:
        Label[node]=node

Jedoch in obigem Code der zu Label zugewiesenen Werte, die die Änderung im Wörterbuch ist verloren.

Above Fortpflanzungsfunktion wird als aufrufbare für Mikrogewinde verwendet (d.h. Tasklets)

War es hilfreich?

Lösung

Mit dem Multiprozessing Modul des Standard Bibliothek - es ahmt die Schnittstelle des threading Modul (zur Erleichterung der bestehenden multithreaded Code Portierung) und alle Kerne voll nutzen können Sie haben. Threading und stackless sind sowohl Single-Core (und in der Tat, stackless ist nicht präemptiven, so Programmierung für sie ist ganz anders als für beide Einfädeln oder Multiprocessing als Programmierung).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top