Python, использование мультипроцесса медленнее, чем его отсутствие

Проведя много времени в попытках разобраться с многопоточностью, я придумал этот код, который является эталонным тестом:

Пример 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)

Он завершается за 2 секунды (половина времени многопоточности). Из любопытства я решил выполнить следующее:

Пример 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)

К моему ужасу, он выполнился менее чем за полсекунды!

Что здесь происходит? Я ожидал, что многопоточная обработка будет работать быстрее - разве она не должна завершаться за половину времени примера 2, учитывая, что пример 1 - это пример 2, разделенный на два процесса?

Обновление:

После рассмотрения отзывов Криса я включил "фактический" код, потребляющий наибольшее время процесса, что привело меня к мысли о многопоточной обработке:

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)
9
задан ali_m 10 August 2014 в 23:19
поделиться