Aleksey
20.05.2018
09:44:51
Понял ))
Так вот, по мултипоточности. входные данные (20000 ссылок), запустить 4 потока и выполнять в них парсинг. Так же хотел подключить эту библиотеку https://github.com/tqdm/tqdm#faq-and-known-issues Как правильно реализовать ?
from threading import Thread
class DownloadThread(Thread):
def __init__(self, url, name):
Thread.__init__(self)
self.name = name
self.url = url
def get_page(self, url):
return url
def run(self):
print(self.get_page(self.url))
def main(urls):
name = "Поток 1"
thread = DownloadThread(urls, name)
thread.start()
if __name__ == "__main__":
urls = ["http://www.irs.gov/pub/irs-pdf/f1040.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040a.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040ez.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040es.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040es.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040sb.pdf"]
main(urls)
Максим
20.05.2018
09:50:05
Alex
20.05.2018
09:51:15
def recurssion(str):
if len(str)>1:
b=str[0]
for i in str[1:]:
if i in "{}[]()":
if i in "([{":
recurssion(str[str.index(i):])
elif i==")" and b=="(":
break
elif i=="]" and b=="[":
break
elif i=="}" and b=="{":
break
else:
return False
else:
return False
def checkio(expression):
for i in expression:
if i in "({[":
recurssion(expression[expression.index(i):])
return True
ну, нате
Google
Игорь
20.05.2018
10:07:18
Aleksey
20.05.2018
10:09:41
В общем получается какая-то дичь
Знаю что нужно как-то поделить входные данные на эти три потока
Игорь
20.05.2018
10:12:24
В общем получается какая-то дичь
тебе нужен общий счетчик, который ты в каждом треде будешь увеличивать, и общее количество всего, что тебе надо выкачать. Счетчик блокируй, чтоб не получилось что в него одновременно несколько тредов пишут.
Aleksey
20.05.2018
10:16:28
Блин, вроде так легко, но что-то я туплю жестко
Ребят, может у кого есть готовая реализация? А то я уже день убил, и толком не разобрался
Максим
20.05.2018
10:30:26
Alexander
20.05.2018
10:44:29
Так в примерах tqdm почти все есть. https://github.com/tqdm/tqdm/blob/master/examples/parallel_bars.py только подпилить немного.
Или как здесь если нужен один на все 4 треда. Только лок добавить
https://github.com/tqdm/tqdm/blob/master/examples/tqdm_wget.py
Alex
20.05.2018
11:13:47
пример
Google
Aleksey
20.05.2018
11:14:57
ооо
Temir
20.05.2018
11:54:10
?
Aleksey
20.05.2018
11:54:52
Максим
20.05.2018
12:09:53
кот, нам нужен код
Aleksey
20.05.2018
12:10:40
?
get_page() выполняет парсинг
Максим
20.05.2018
12:13:50
Alex
20.05.2018
12:14:43
перепиши и будет то, что нужно
Aleksey
20.05.2018
12:14:45
Максим
20.05.2018
12:15:38
Aleksey
20.05.2018
12:16:23
Alex
20.05.2018
12:16:52
Максим
20.05.2018
12:17:37
Aleksey
20.05.2018
12:18:31
Максим
20.05.2018
12:19:26
тогда нам нужен кто-то кто на пальцах объяснит про очереди и продюсеров)
Aleksey
20.05.2018
12:19:50
??
Игорь
20.05.2018
12:24:46
Максим
20.05.2018
12:27:29
Google
Aleksey
20.05.2018
12:35:33
Максим
20.05.2018
12:39:38
выглядит мило. назначаем кота главным по параллельным вычислениям????
Aleksey
20.05.2018
13:43:34
Это было сложно, но я справился:D
Спасибо всем кто откликнулся
Нави
20.05.2018
18:01:18
У меня такое затруднение. Каждые 5 секунд запрос на сервер, сначала делал в цикле, в результате плавал тайминг по времени, так как длительность самого запроса плавает, потом сделал отдельный поток и в бесконечном цикле ожидало по каналу сигнал на запрос, но этот цикл по нарастающей отстает от таймера. Запрос может длится более 5 секунд. Теперь думаю для каждого нового запроса создавать поток. Может есть более правильные наработанные способы по такой ситуации?
Максим
20.05.2018
19:06:27
Нави
20.05.2018
19:08:11
спсб, я уже делаю герутинами, довольно просто получается...
Aleksey
21.05.2018
13:35:23
И снова здравствуйте.
UnicodeEncodeError: 'latin-1' codec can't encode characters
Скажите, кто т осталкивался с проблемой в BeautifulSoup?
В ссылке есть "Akira_(日日日)"
Romka
21.05.2018
13:37:59
Aleksey
21.05.2018
13:44:28
И как он будет рабочим? Akira_(\xe6\x97\xa5\xe6\x97\xa5\xe6\x97\xa5)
А, понял ".encode('utf-8')"
Pavel
21.05.2018
19:42:54
воу воу полегче
биос тут при чём?
ты не мог запороть биос запоров веник
Alex
21.05.2018
19:44:02
Бывало, лечилось с liveUSb восстановлением загрузочного сектора
Pavel
21.05.2018
19:44:23
может мамка сдохла?
а если вынуть веник, в биос пустит?
Google
Absolute Nikola
21.05.2018
19:45:01
https://help.ubuntu.com/community/Boot-Repair
Alex
21.05.2018
19:45:01
Ну значит железная проблема, к сервисникам
Писки есть на старте?
Мать признаки жизни показывает?
Диоды горят какие нибудь?
Pavel
21.05.2018
19:46:18
в общем тут будет мнением большинства, что проблема не софтовая
мучением будет только туда добраться, если ты в крупном городе и надо работать днём
Absolute Nikola
21.05.2018
19:50:16
а жд снять?
Pavel
21.05.2018
19:50:32
Absolute Nikola
21.05.2018
19:50:36
подключить к другому компу и там пойти с лайва
кирпич и лень vs комп и день возьни
?
Pavel
21.05.2018
19:51:05
ну а кому лень, тот идёт в сервис с баблом и ноутом
если он не на гарантии, то бояться нечего
если на гарантии, то только сервис, увы
находишь чистый стол, берёшь пару стаканчиков под винтики
ну и фоткать можно поэтапно
xPushkin
21.05.2018
19:53:23
Друзья, я напомню, что это чат про Python :)