Найти - Пользователи
Полная версия: multi threading
Начало » Python для новичков » multi threading
1
nikoTM
Ребят я пытаюсь разобраться с мультипоточностю ну вот что получилось:
#ну надеюсь понятно что тут модули
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
но что то я не вижу чтоб на отдельные потоки ставиться…в чем моя ошибка ?
Александр Кошелев
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
в чем моя ошибка ?
вы не разобрались с тредами в питоне. читайте документацию.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB