Python, en utilisant des serveurs multi-processus est plus lent que ne l'utilisez pas

Après avoir passé beaucoup de temps à essayer d'envelopper ma tête autour de multitraitement je suis venu avec ce code, qui est un test de référence:

Exemple 1:

from multiprocessing  import Process

class Alter(Process):
    def __init__(self, word):
        Process.__init__(self)
        self.word = word
        self.word2 = ''

    def run(self):
        # Alter string + test processing speed
        for i in range(80000):
            self.word2 = self.word2 + self.word

if __name__=='__main__':
    # Send a string to be altered
    thread1 = Alter('foo')
    thread2 = Alter('bar')
    thread1.start()
    thread2.start()

    # wait for both to finish

    thread1.join()
    thread2.join()

    print(thread1.word2)
    print(thread2.word2)

Ceci termine en 2 secondes (la moitié du temps de multithreading). Par curiosité j'ai décidé de lancer cette prochaine:

Exemple 2:

word2 = 'foo'
word3 = 'bar'

word = 'foo'
for i in range(80000):
    word2 = word2 + word

word  = 'bar'
for i in range(80000):
    word3 = word3 + word

print(word2)
print(word3)

À ma grande horreur, ce couru en moins d'une demi-seconde!

Ce qui se passe ici? Je m'attendais à le multitraitement de courir plus vite - ne devrait-elle pas complète dans la moitié de l'Exemple 2 du temps étant donné que l'Exemple 1 est l'Exemple 2, divisé en deux processus?

Mise à jour:

Après avoir tenu compte de Chris commentaires, j'ai compris le "réel" code consomment le plus de temps de traitement, et m'amène à considérer le multitraitement:

self.ListVar = [[13379+ strings],[13379+ strings],
                [13379+ strings],[13379+ strings]]

for b in range(len(self.ListVar)):
    self.list1 = []
    self.temp = []
    for n in range(len(self.ListVar[b])):
        if not self.ListVar[b][n] in self.temp:
            self.list1.insert(n, self.ListVar[b][n] + '(' + 
                              str(self.ListVar[b].count(self.ListVar[b][n])) +
                              ')')
           self.temp.insert(0, self.ListVar[b][n])

   self.ListVar[b] = list(self.list1)

OriginalL'auteur Rhys | 2012-01-08