Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 15, 2010 16:05:44

python999
От:
Зарегистрирован: 2010-11-13
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Многопоточность

from time import clock
from parse.string import *
from parse.regular import *
import thread

if (__name__ == '__main__'):

asd = []
fi = open('rus.txt','r').readlines()
print 'words:',len(fi)

def one():
global fi, count_thread, asd

while len(fi) > 0:
stroka = fi.pop()
if sim2(stroka):
asd.append(stroka)
count_thread -= 1

count_thread = 0

start = clock() #---------------
for i in xrange(0, 5):
count_thread += 1
thread.start_new_thread(one,())

while count_thread > 0:
pass

end = clock() #---------------

print('one - %1.10f Sec threaded' % (end - start))

def two():
global fi
asd = filter(sim2,fi)

start = clock()
two()
end = clock()

print('two - %1.10f Sec' % (end - start))

def tree():
global fi

while len(fi) > 0:
stroka = fi.pop()
if sim2(stroka):
asd.append(stroka)

start = clock()
tree()
end = clock()

print('tree - %1.10f Sec' % (end - start))
def sim2(stroka):
stroka = stroka[:-1]
if stroka != stroka[::-1]:
return 0
return 1
>>>
words: 733967
one - 1.7641071700 Sec threaded
two - 0.0000057968 Sec
tree - 0.0000029333 Sec
>>>

Почему one() работает медленней всего?
Почему two() работает медленней tree()?
И почему иногда выходит “Unhandled exception in thread started by <адресс какойто функции>”?



Офлайн

#2 Дек. 15, 2010 17:00:03

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Многопоточность

Вы страшный человек!

Cтиль написания программы просто дикий. Брбрбрбрбр.

Теперь я понимаю откуда эти басни про то как в питоне все плохо с параллельностью…

В общем прежде чем задаваться такими сложными вопросами как многопоточность, я бы советовал научиться писать на питоне, а не на паскале или что это у вас? Си++?) А как научитесь почитайте в том числе и про GIL.



Отредактировано (Дек. 15, 2010 17:01:05)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version