Нечто подобное:
def Get_Page(page, headers={}, proxy=""): #Настраиваем прокси old_socket = socket.socket if proxy: socks5, port = string.split(proxy, ":") socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, socks5, int(port)) socket.socket = socks.socksocket #Формируем запрос и отправляем его urllib2.socket.setdefaulttimeout(10) req = urllib2.Request(page) for key, value in headers.items(): req.add_header(key, value) try: F = urllib2.urlopen(req) except: socket.socket = old_socket return "" #Считываем результат result = "%s"%F.headers for line in F: result += line socket.socket = old_socket return result def Check_Proxy(proxy, page="http://ya.ru"): headers = {'Referer' : 'ya.ru', 'User-Agent': agent_list[random.randint(0,len(agent_list)-1)], 'Accept-Language' : 'en-us,en;q=0.5', 'Accept' : 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'Accept-Charset' : 'utf-8;q=0.7,*;q=0.7' } respone = Get_Page(page, headers=headers, proxy=proxy) if(len(respone) > 5): good_proxy.append(proxy) return 1 return 0
Так вот,в случаи запуска потоков с вызовом этой функции,загрузка на проц 100%. Даже при двух потоках %)
Пример вызова:
i = 0 thread_count = 3 thread_list = [] while i < len(proxy_list): if( (threading.activeCount() < thread_count) and (i < len(proxy_list)) ): thread_list.append(threading.Thread(target=Check_Proxy, args=[proxy_list[i]])) thread_list[i].start() time.sleep(1) i += 1
Немного коряво,но думаю понятно.
Питон использую не слишком давно,так что просьба сильно не пинать. =)
П.С.: time.sleep(1) добавил чтобы немного снизить нагрузку,но если его убрать 100%