@propython

Страница 178 из 228
Игорь
18.05.2018
16:59:56
всмысле должно быть ключики ключиками, а по ключикам данные. А у тебя в ключиках данные?

Aleksey
18.05.2018
17:00:13
Да

Но в одном месте отдаются только данные без ключей.

Google
Aleksey
18.05.2018
17:01:22




Игорь
18.05.2018
17:01:42
Но в одном месте отдаются только данные без ключей.
у тебя все сложено либо в dict, либо в list. вшсе без ключа не может существовать

if type(t) == dict: проверяем на тип, если есть, то как со словарем, если нет, то как со списком

кстати, у мебя что, во входящем json нет строгой структуры?

Игорь
18.05.2018
17:10:27
Aleksey
18.05.2018
17:10:52
Ну так я же говорил

в одних случаях возвращяется: t = {"any key": "any data"}

И в двух случаях t = {"any data"}

Google
Aleksey
18.05.2018
17:11:44
Игорь
18.05.2018
17:12:17
в одних случаях возвращяется: t = {"any key": "any data"}
а в других должно возвращаться t=["any data"], или выкинь нафик свой парсер json и юзай тот, который встроен в питон

хотя после парсинга, если в json имеется только одно значение, то будет так: ["any data"]

стоп, сам запутался

наоборот. https://docs.python.org/3/library/json.html

Aleksey
18.05.2018
17:15:19
['029', '100yen Locker', '108-Gou'],

это то что без ключей приходит

мне приходит:

{'title': 'Light Novel Illustrators', 'ajax_content': 'illustrator', 'alphabet': 'all', 'limit': '3', 'persons_list': ['029', '100yen Locker', '108-Gou'], 'total_persons': '1463'}

Игорь
18.05.2018
17:16:21
это то что без ключей приходит
смотри в доку, там примеры есть правильные

Aleksey
18.05.2018
17:17:25
Потом я делаю

json_data = json.loads(str(res.text)).get('persons_list', [])

и после того как циклом прохожусь получаю строку



А в других я получаю: [{'label_title': '2D Dream Bunko'}, {'label_title': '2D Dream Novels'}]





Игорь
18.05.2018
17:31:09


если у тебя по одному ключу всегда прилетает словарь, по другому список, а по третьему строка, то не городи огородов, и проверяй только наличие ключа, и если он есть, парсь данные, если нет, проверяй следующий ключ

Aleksey
18.05.2018
17:41:50
Так я проверку в цикле делаю

Google
Aleksey
18.05.2018
17:43:37
И в тех случаях где список, будет строка (в цикле)

Игорь
18.05.2018
17:44:44
И в тех случаях где список, будет строка (в цикле)
полагаю, что в этом случае у тебя ломается весь парсинг нафик

Aleksey
18.05.2018
17:45:12
Частично:D

Но с условиями нормальн овсе работает

Игорь
18.05.2018
17:45:36
или ты что-то там такое накрутил, что у тебя прям проблемы вылетают

Aleksey
18.05.2018
17:46:13
Могу пример jsona кинуть

Для двух случаев

Aleksey
18.05.2018
17:58:43
https://pastebin.com/HTEi7aUj

Игорь
18.05.2018
18:15:04
https://pastebin.com/HTEi7aUj
что-то ты там ппц понакрутил

Aleksey
18.05.2018
18:15:52
Строго не судите, я питон н енастолько хорошо знаю)

Игорь
18.05.2018
18:19:43
тебе проверять на тип надо то, что у тебя get возвращает

Aleksey
18.05.2018
18:20:05
Ну а я про что говорил

Я писал что в одном случае ключи есть, а в двух их просто нет)

Игорь
18.05.2018
18:21:31
Я писал что в одном случае ключи есть, а в двух их просто нет)
так зачем ты эти два случая вообще в цикл загоняешь?

Aleksey
18.05.2018
18:22:35
Для записи в бд

Игорь
18.05.2018
18:23:35
Для записи в бд
сначала нормализируй данные, собери их в один словарь, а потом пройди по этому словарю и запиши в бд

не смешивай котиков и печеньки, иначе долго шерстью плеваться будешь потом))

Google
Игорь
18.05.2018
18:31:00
Для записи в бд
смотри, в моем коде, все данные сводятся в один список, который является очередью для второго потока, пишущего в базу. А сама функция записи унифицирована и очень маленькая. всего один запрос.



Aleksey
18.05.2018
18:36:24


Dmitry
19.05.2018
11:47:42
Согласно документации GIL пробуждает\усыпляет потоки в тот момент времени, когда потоки не трогают какие-то общие данные. И тут же написано, что он делает это каждые 5мс. Вопрос как это все вяжется?

Pavel
19.05.2018
13:18:47
Вроде логично

Dmitry
19.05.2018
13:22:38
За 5мс поток может не успеть данные обработать

Anton
19.05.2018
13:24:35
За 5мс поток может не успеть данные обработать
тогда поток улетает в спячку по шедулеру. другой поток просыпается

Dmitry
19.05.2018
13:25:18
Ага. В потом просыпается и кто то уже попортил данные к которым он обращаться начал

Anton
19.05.2018
13:25:43
да, такое бывает, память общая

для этого нужны всякие боркировщики типа мьютексов, семафоров

Alex
19.05.2018
14:04:34
За 5мс поток может не успеть данные обработать
Планировщику все равно обработает поток данных за 5 сек или нет, в случае системного планировщика он вообще работает в слепую подгружая в TSS состояние регистров из ядра и восстанавливая контекст выполняет N тактов(если еще прерывания не произошло). Так что случай "В потом просыпается и кто то уже попортил данные" это уже руки разработчика. Если 2 дескриптора создано в 2 процессах на одну и ту же файловую ноду, то это вопрос синхронизации данных процессов

А GIL по сути тот же самый шедулер который просто должен распределять время выполнения со встроенной синхронизацией. типо control flow над несколькими контекстами

Eugene
19.05.2018
15:49:14
Друзья, а кто-нибудь уже юзал APIStar на проде? Что скажите про него?

Alex
19.05.2018
16:22:46
подскажите, как взять первый разряд двоичного числа для сравнения

Ulan
19.05.2018
18:08:14
Здравствуйте

xPushkin
19.05.2018
18:08:24
Привет

Ulan
19.05.2018
18:09:47
Как дела программисты

?

Google
Aleksey
20.05.2018
01:09:31
Ребят, подскажите пожалуйста по потокам. Есть входные данные (20000 ссылок). Хочу запустить 4 и более потоков, в каждом выполнять парсинг с интервалом запрос в 4 секунды. Может кто пример написать? С потоками еще ни разу не работал..

Alex
20.05.2018
09:34:08
у меня возникает зацикленная рекурссия можете по коду подсказать, что я делаю не так?

Alex
20.05.2018
09:36:31
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

Aleksey
20.05.2018
09:38:18
https://www.saltycrane.com/blog/2008/09/simplistic-python-thread-example/
Вопрос. А можно ли как то объединить с https://github.com/tqdm/tqdm ?

Alex
20.05.2018
09:39:33
if i in "({[": .. if i in "([{": recurssion(str[str.index(i)?) Думаю здесь пахнет жареным

Игорь
20.05.2018
09:42:22
блин, юзайте режим вставки кода, смайлики бесят

Aleksey
20.05.2018
09:42:37
как?

Вижу слеш

Игорь
20.05.2018
09:43:18
кнопка возле единички, там апостроф `

Страница 178 из 228