صعوبة في استخدام الثعبان بدون تكديس ، لا يمكن الكتابة إلى قول

StackOverflow https://stackoverflow.com/questions/2901633

سؤال

لدي خوارزمية نوع بسيطة من نوع الخريطة ، والتي أريد تنفيذها في بيثون والاستفادة من النوى المتعددة.

قرأت في مكان ما أن المواضيع باستخدام وحدة الخيط الأصلي في 2.6 لا تستفيد من النوى المتعددة. هل هذا صحيح؟

حتى أنني قمت بتطبيقه باستخدام ثعبان بدون تكديس ، لكنني أخطأ في أخطاء غريبة [تحديث: أظهر البحث السريع أن المكدس أقل لا يسمح بنوى متعددة ، لذا فهي أي بدائل أخرى؟

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

ومع ذلك ، في الكود أعلاه ، يتم فقدان القيم المخصصة للتسمية ، وهذا هو التغيير في القاموس.

يتم استخدام وظيفة الانتشار أعلاه على أنها قابلة للاستدعاء ل microthreads (أي بالمغارات)

هل كانت مفيدة؟

المحلول

استخدم ال المعالجة متعددة وحدة المكتبة القياسية - تحاكي واجهة threading الوحدة النمطية (لتخفيف نقل التعليمات البرمجية المتعددة المؤشرات) ويمكن استخدامها بالكامل جميع النوى التي لديك. الخيوط وبلا تكديس كلاهما منفردة (وبالفعل ، لا تكديس غير مسمى ، لذلك فإن البرمجة لأنها تختلف تمامًا عن البرمجة إما للخيوط أو المعالجة المتعددة).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top