Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 6, 2009 21:00:55

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

multi threading

Ребят я пытаюсь разобраться с мультипоточностю ну вот что получилось:

#ну надеюсь понятно что тут модули
import urllib
import threading
from Queue import Queue
import time

def checkit(): #главная функция
line = q.get() #вытаскиеваем из очереди 1 елемент
x = urllib.urlopen("http://www.{0}".format(line)).getcode() #ну тут обробатываем этот элемент
print str(x) #тут тоже
q.task_done() #даем очереди знать что мы закончили работу с 1 элементом и чтоб она приступила к 2ому

q = Queue() #делаем саму очередь
Threads_Number = threading.active_count() #до time.sleep() делаем динамическию очередь
if q.qsize()<Threads_Number*2:
for x in xrange((Threads_Number*2)-q.qsize()):
t = threading.Thread(target=checkit)
t.start()
else:
time.sleep(0.1)
f = open("urls.txt", "r") #открываем файл с содержанием сайтов для чтения
try:
for line in f: #проводим цикл чтоб получить каждую строку по одтельности
q.put(line) #добовляем в очередь
finally:
f.close() #закрываем файл
q.join() #эт я хз там в примере было
checkit() #вызываем главную функцию
в файле urls.txt например :
python.su
google.ru
google.com
ebay.com
amazon.com
но что то я не вижу чтоб на отдельные потоки ставиться…в чем моя ошибка ?



Офлайн

#2 Июнь 6, 2009 23:38:21

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

multi threading

nikoTM
Threads_Number = threading.active_count() #до time.sleep() делаем динамическию очередь if q.qsize()<Threads_Number*2: for x in xrange((Threads_Number*2)-q.qsize()):
что вы этим кодом хотите сказать?
nikoTM
но что то я не вижу чтоб на отдельные потоки ставиться…
а вы сами поняли что должно “ставиться” и куда?
nikoTM
в чем моя ошибка ?
вы не разобрались с тредами в питоне. читайте документацию.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version