JOHN_16
я что то не могу понять о чем речь идет. это какая библиотека urllib, где есть request?
это не requests
в третьем питоне urllib и urllib2 собрали в один пакет, упорядочив его
snakeand1
Меня не устраивает .read(), который занимает около 2 секунд. Из-за большого кол-ва запроса 2 секунды могут перерасти в минуты. Как можно его ускорить?
вообще, можно не через .read() читать, а через next()
>>> import urllib.request
>>> data = urllib.request.urlopen('http://python.su')
>>> next(data)
b'\n'
>>> next(data)
b'\n'
>>> next(data)
b'\n'
>>> next(data)
b'\n'
>>> next(data)
b'\n'
>>> next(data)
b'<!doctype html>\n'
>>>
>>>
>>> for i, _ in zip(data, range(3)):
... i
...
b'<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->\n'
b'<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->\n'
b'<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->\n'
>>>
snakeand1
Может я не прав, но по-моему единственный шанс ускорить код - использовать потоки.
если запросов много, то лучше распределить их, чтобы они параллельно работали
snakeand1
Пробовал запускать в двух потоках, одну и ту же функцию(включает в себя вызов других функций), потоки шли друг за другом, а не одновременно.
непонятно, как ты запускал и как диагностировал
можно построчно читать через next() (явно или в цикле) и помещать строки в очередь (queue.Queue), а там уже другим потоком из очереди распределять
но всё это в одном случае: если распараллеливание необходимо