Size: a a a

Сообщество Python Программистов

2020 May 03

SS

Sergey Samoilenko in Сообщество Python Программистов
я прост опока смотрю на многопоточность и голова взрывается 🙂 на второй неделе изучения сложно врубиться пока что
источник

A

Alexander in Сообщество Python Программистов
можно так же посмотреть в сторону asyncio. Там для понимания немного проще
источник

SS

Sergey Samoilenko in Сообщество Python Программистов
о спасибо - щас это гляну
источник

A

Alexander in Сообщество Python Программистов
возможно тебе подойдет именно этот вариант
источник

SS

Sergey Samoilenko in Сообщество Python Программистов
спасибо!
источник

A

Alexander in Сообщество Python Программистов
если в кратце - то в главном потоке ты проходишь по списку сайтов, и запускаешь асинхронную функцию проверки. Результат в виде ожидания ты дожидаешься управляюще конструкцией await. Как только он приходит - процесс сам переключается на его обработку, складывая, например, данные в БД
источник

A

Alexander in Сообщество Python Программистов
но пока он выполняется, процесс работает без остановки и обрабатывает дальнейшие инструкции
источник

A

Alexander in Сообщество Python Программистов
есть еще grequests, позволяющий асинхронно обработать множество соединений
источник

A

Alexander in Сообщество Python Программистов
там вообще магия)
источник

SS

Sergey Samoilenko in Сообщество Python Программистов
Alexander
если в кратце - то в главном потоке ты проходишь по списку сайтов, и запускаешь асинхронную функцию проверки. Результат в виде ожидания ты дожидаешься управляюще конструкцией await. Как только он приходит - процесс сам переключается на его обработку, складывая, например, данные в БД
теория мне примерно ясна - вот когда код смотрю - тогда голова и взрывается...
источник

A

Alexander in Сообщество Python Программистов
кстати, для проверки сайтов grequests подойдет более чем
источник

SS

Sergey Samoilenko in Сообщество Python Программистов
Alexander
кстати, для проверки сайтов grequests подойдет более чем
дело в том - что при проверке сайтов - я не считываю их по одному - я выгружаю из базы один раз весь список и потом проверяю их
источник

A

Alexander in Сообщество Python Программистов
типичный пример использования:
import grequests
urls = ['http://example.com', 'http://ya.ru', ... ]
reqs = []
for url in urls:
   reqs.append(grequests.get(url)) #тут еще не выполняется запрос

for response in grequests.map(reqs): #а вот тут выполняется в 16 потоков
   if response.statusCode == 200 : # объект response такой же, как у обычного requests
       #тут что то делаешь
источник

SS

Sergey Samoilenko in Сообщество Python Программистов
Alexander
типичный пример использования:
import grequests
urls = ['http://example.com', 'http://ya.ru', ... ]
reqs = []
for url in urls:
   reqs.append(grequests.get(url)) #тут еще не выполняется запрос

for response in grequests.map(reqs): #а вот тут выполняется в 16 потоков
   if response.statusCode == 200 : # объект response такой же, как у обычного requests
       #тут что то делаешь
спасибо за пример. Я как ращз буду делать сейчас проверку доменов (штук 60к за раз) - это пригодится
источник

AT

Alexander T in Сообщество Python Программистов
Просто Ярик
k(
'\
H\
e\
l\
l\
o\
,\
\
w\
o\
r\
l\
d\
!'
)
тогда можно сделать вот так
я сделал но в 35 строк
источник

ПЯ

Просто Ярик... in Сообщество Python Программистов
2 строки всего
источник

AT

Alexander T in Сообщество Python Программистов
Просто Ярик
k(
'\
H\
e\
l\
l\
o\
,\
\
w\
o\
r\
l\
d\
!'
)
тогда можно сделать вот так
о, сделал в 33! кек
источник

ПЯ

Просто Ярик... in Сообщество Python Программистов
там после равно можно не ставить перенос вроде
источник

ПЯ

Просто Ярик... in Сообщество Python Программистов
а, не
источник

ПЯ

Просто Ярик... in Сообщество Python Программистов
нужно
источник