
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.209.142] |
![]() |
|
Сообщ.
#1
,
|
|
|
Подскажите пожалуйста, как можно расширить код, чтобы была поддержка добавить во многопоточное приложение дополнительных параметров так, чтобы все они так же учитывались.
То есть например, есть просто параметр: urls = { список ссылок } Программа в многопоточном режиме обходит каждую ссылку. Я же хочу urls = { список ссылок } data = { список данных } Количество ссылок умножаются на количество данных. Приведу свой новичковый код, может намекнете. С меня плюсики за любые наводки ![]() ![]() #!/usr/bin/env python from multiprocessing.pool import ThreadPool from time import time as timer import urllib import urllib2 threads = 50 timeout = 5 urls = open("urls.txt").read().splitlines() # TODO: добавить дополнительный параметр data = open("data.txt").read().splitlines() def check_urls(url): try: values = { # здесь будут передаваться данные # TODO: в идеале и третий параметр это рандомный юзерагент } headers = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36 OPR/37.0.2178.43" } tstart = timer() post = urllib.urlencode(values) request = urllib2.Request(url, post, headers) response = urllib2.urlopen(request, timeout=timeout) return url, response, None, tstart except Exception as e: return url, None, e start = timer() results = ThreadPool(threads).imap_unordered(check_url, urls) for url, body, error, tstart in results: if error is None: status = body.read() # ... #else: #print("error") print("Elapsed time: %s" % (timer() - start)) |