Чупакабра
Там строка возвращается
t = {"any key": "any data"}
Kota
Ну так я же говорил
Kota
в одних случаях возвращяется: t = {"any key": "any data"}
Kota
И в двух случаях t = {"any data"}
Чупакабра
в одних случаях возвращяется: t = {"any key": "any data"}
а в других должно возвращаться t=["any data"], или выкинь нафик свой парсер json и юзай тот, который встроен в питон
Чупакабра
хотя после парсинга, если в json имеется только одно значение, то будет так: ["any data"]
Чупакабра
стоп, сам запутался
Чупакабра
наоборот. https://docs.python.org/3/library/json.html
Kota
['029', '100yen Locker', '108-Gou'],
Kota
это то что без ключей приходит
Kota
мне приходит:
Kota
{'title': 'Light Novel Illustrators', 'ajax_content': 'illustrator', 'alphabet': 'all', 'limit': '3', 'persons_list': ['029', '100yen Locker', '108-Gou'], 'total_persons': '1463'}
Чупакабра
это то что без ключей приходит
смотри в доку, там примеры есть правильные
Kota
Потом я делаю
Kota
json_data = json.loads(str(res.text)).get('persons_list', [])
Kota
и после того как циклом прохожусь получаю строку
Kota
Kota
А в других я получаю: [{'label_title': '2D Dream Bunko'}, {'label_title': '2D Dream Novels'}]
Kota
Kota
Знаю что плохо так далать, но я не удержался:D
Чупакабра
как-то так
Чупакабра
Знаю что плохо так далать, но я не удержался:D
если у тебя по одному ключу всегда прилетает словарь, по другому список, а по третьему строка, то не городи огородов, и проверяй только наличие ключа, и если он есть, парсь данные, если нет, проверяй следующий ключ
Kota
Так я проверку в цикле делаю
Kota
И в тех случаях где список, будет строка (в цикле)
Чупакабра
И в тех случаях где список, будет строка (в цикле)
полагаю, что в этом случае у тебя ломается весь парсинг нафик
Kota
Частично:D
Kota
Но с условиями нормальн овсе работает
Чупакабра
или ты что-то там такое накрутил, что у тебя прям проблемы вылетают
Kota
Могу пример jsona кинуть
Kota
Для двух случаев
Чупакабра
Но с условиями нормальн овсе работает
вот пример моего древнего говнокода, в котором я нормализировал геоданные. Оно жрало несколько миллионов самых разных вариантов json, что отдавал osm несколько лет назад, и ни разу не падало.
Kota
https://pastebin.com/HTEi7aUj
Чупакабра
https://pastebin.com/HTEi7aUj
что-то ты там ппц понакрутил
Kota
Строго не судите, я питон н енастолько хорошо знаю)
Чупакабра
Строго не судите, я питон н енастолько хорошо знаю)
у тебя сторой кусок должен упасть, по идее. Ибо отродясь там небыло никаких ключей.
Чупакабра
тебе проверять на тип надо то, что у тебя get возвращает
Kota
Ну а я про что говорил
Kota
Я писал что в одном случае ключи есть, а в двух их просто нет)
Чупакабра
Я писал что в одном случае ключи есть, а в двух их просто нет)
так зачем ты эти два случая вообще в цикл загоняешь?
Kota
Для записи в бд
Чупакабра
Для записи в бд
сначала нормализируй данные, собери их в один словарь, а потом пройди по этому словарю и запиши в бд
Чупакабра
не смешивай котиков и печеньки, иначе долго шерстью плеваться будешь потом))
Чупакабра
Для записи в бд
смотри, в моем коде, все данные сводятся в один список, который является очередью для второго потока, пишущего в базу. А сама функция записи унифицирована и очень маленькая. всего один запрос.
Чупакабра
Kota
смотри, в моем коде, все данные сводятся в один список, который является очередью для второго потока, пишущего в базу. А сама функция записи унифицирована и очень маленькая. всего один запрос.
Хм. А список с какими значениями? Пример, хочу понять. Потому что я немного не понимаю cтрочку 'insert into base ({}) values ({})'.format(self.col, self.val)
Kota
:D
Dmitry
Согласно документации GIL пробуждает\усыпляет потоки в тот момент времени, когда потоки не трогают какие-то общие данные. И тут же написано, что он делает это каждые 5мс. Вопрос как это все вяжется?
P
Вроде логично
Dmitry
За 5мс поток может не успеть данные обработать
Anton
За 5мс поток может не успеть данные обработать
тогда поток улетает в спячку по шедулеру. другой поток просыпается
Dmitry
Ага. В потом просыпается и кто то уже попортил данные к которым он обращаться начал
Anton
да, такое бывает, память общая
Anton
для этого нужны всякие боркировщики типа мьютексов, семафоров
Александр
За 5мс поток может не успеть данные обработать
Планировщику все равно обработает поток данных за 5 сек или нет, в случае системного планировщика он вообще работает в слепую подгружая в TSS состояние регистров из ядра и восстанавливая контекст выполняет N тактов(если еще прерывания не произошло). Так что случай "В потом просыпается и кто то уже попортил данные" это уже руки разработчика. Если 2 дескриптора создано в 2 процессах на одну и ту же файловую ноду, то это вопрос синхронизации данных процессов
Александр
А GIL по сути тот же самый шедулер который просто должен распределять время выполнения со встроенной синхронизацией. типо control flow над несколькими контекстами
Александр
Eugene
Друзья, а кто-нибудь уже юзал APIStar на проде? Что скажите про него?
Alex
подскажите, как взять первый разряд двоичного числа для сравнения
Anonymous
Здравствуйте
Chebyrash
Привет
Anonymous
Как дела программисты
Anonymous
?
Kota
Ребят, подскажите пожалуйста по потокам. Есть входные данные (20000 ссылок). Хочу запустить 4 и более потоков, в каждом выполнять парсинг с интервалом запрос в 4 секунды. Может кто пример написать? С потоками еще ни разу не работал..
Alex
у меня возникает зацикленная рекурссия можете по коду подсказать, что я делаю не так?
Alex
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
Kota
https://www.saltycrane.com/blog/2008/09/simplistic-python-thread-example/
Вопрос. А можно ли как то объединить с https://github.com/tqdm/tqdm ?
Александр
if i in "({[": .. if i in "([{": recurssion(str[str.index(i)😏) Думаю здесь пахнет жареным
Чупакабра
блин, юзайте режим вставки кода, смайлики бесят
Kota
как?
Kota
Вижу слеш
Чупакабра
кнопка возле единички, там апостроф `
Чупакабра
если одиночный, то для одной строки, если по три, то это многострочный