Kota
Ну так я же говорил
Kota
в одних случаях возвращяется: t = {"any key": "any data"}
Kota
И в двух случаях t = {"any data"}
Kota
Kota
Чупакабра
хотя после парсинга, если в 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
Kota
Строго не судите, я питон н енастолько хорошо знаю)
Чупакабра
тебе проверять на тип надо то, что у тебя get возвращает
Kota
Ну а я про что говорил
Kota
Я писал что в одном случае ключи есть, а в двух их просто нет)
Чупакабра
Kota
Для записи в бд
Чупакабра
Для записи в бд
сначала нормализируй данные, собери их в один словарь, а потом пройди по этому словарю и запиши в бд
Чупакабра
не смешивай котиков и печеньки, иначе долго шерстью плеваться будешь потом))
Kota
Чупакабра
Для записи в бд
смотри, в моем коде, все данные сводятся в один список, который является очередью для второго потока, пишущего в базу. А сама функция записи унифицирована и очень маленькая. всего один запрос.
Чупакабра
Kota
Kota
Dmitry
Согласно документации GIL пробуждает\усыпляет потоки в тот момент времени, когда потоки не трогают какие-то общие данные. И тут же написано, что он делает это каждые 5мс. Вопрос как это все вяжется?
P
Вроде логично
Dmitry
За 5мс поток может не успеть данные обработать
Dmitry
Ага. В потом просыпается и кто то уже попортил данные к которым он обращаться начал
Anton
да, такое бывает, память общая
Anton
для этого нужны всякие боркировщики типа мьютексов, семафоров
Александр
За 5мс поток может не успеть данные обработать
Планировщику все равно обработает поток данных за 5 сек или нет, в случае системного планировщика он вообще работает в слепую подгружая в TSS состояние регистров из ядра и восстанавливая контекст выполняет N тактов(если еще прерывания не произошло). Так что случай "В потом просыпается и кто то уже попортил данные" это уже руки разработчика. Если 2 дескриптора создано в 2 процессах на одну и ту же файловую ноду, то это вопрос синхронизации данных процессов
Александр
А GIL по сути тот же самый шедулер который просто должен распределять время выполнения со встроенной синхронизацией. типо control flow над несколькими контекстами
Eugene
Друзья, а кто-нибудь уже юзал APIStar на проде? Что скажите про него?
Alex
подскажите, как взять первый разряд двоичного числа для сравнения
Anonymous
Здравствуйте
Chebyrash
Привет
Anonymous
Как дела программисты
Anonymous
?
Vladimir
Kota
Ребят, подскажите пожалуйста по потокам. Есть входные данные (20000 ссылок). Хочу запустить 4 и более потоков, в каждом выполнять парсинг с интервалом запрос в 4 секунды. Может кто пример написать? С потоками еще ни разу не работал..
Максим
Alex
у меня возникает зацикленная рекурссия можете по коду подсказать, что я делаю не так?
Chebyrash
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
Александр
Александр
if i in "({[":
..
if i in "([{":
recurssion(str[str.index(i)😏)
Думаю здесь пахнет жареным
P
Чупакабра
блин, юзайте режим вставки кода, смайлики бесят
Kota
как?
Kota
Вижу слеш
Чупакабра
кнопка возле единички, там апостроф
`
Чупакабра
если одиночный, то для одной строки, если по три, то это многострочный