У меня есть простой алгоритм сокращения типа карты, который я хочу реализовать на python и использовать несколько ядер.Сложность с использованием несовместимого python, не могу записать в dict
Я где-то читал, что потоки, использующие собственный поточный модуль в 2.6, не используют несколько ядер. это правда?
Я даже реализовать его с помощью Stackless Python, однако я получаю в странные ошибки [Update: быстрый поиск показал, что стек меньше не позволяет использовать несколько ядер поэтому их любые другие альтернативы?]
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
Однако в приведенном выше коде значения, присвоенные Label, то есть изменение словаря, теряются.
функции Над размножать используется как вызываемая для микронитей (т.е. Tasklets)
В частности, multiprocessing.map() является _incredibly_ полезным. – carl