Mant1
Может логичней форматировать все только в год?
Denis
а если lazy load не вариант, а данные нужны все и сразу?
у open есть 3-й аргумент - размер буфера
Denis
выставь в что-нить типа один мегабайт
Co(n)stantine👨‍🔬
Как учить питон?
https://habr.com/ru/post/456342/
Let’s
у open есть 3-й аргумент - размер буфера
вроде чуть-чуть более ровные значения показывает, но не чувстуется разница между одним диском и RAID-0 на nvme ssd. Как проверить что к файлу был применен striping?
Denis
возможно ее особо и нет, так как дисковый кеш сильно помогает на таком маленьком размере
Let’s
возможно ее особо и нет, так как дисковый кеш сильно помогает на таком маленьком размере
то есть разница будет только на пропускной способности под нагрузкой но не на скорости чтения в одном потоке? Плохо, сейчас 150 Mb read занимает ~90ms.
Denis
обычно разница в методе доступа заметна на чтении из случайных мест из большого файла. а так ты и так на макс скорости считай делаешь
denis ⛅️
я же правильно понимаю, что mmap тупо предоставляет процессу доступ к выделенному участку физ памяти?
Tishka17
не
Tishka17
он мапит файл в память
denis ⛅️
Tishka17
значит что ты общаешся с файлом как с куском памяти, а ОС сама там читает блоками
Проксимов
https://www.jetbrains.com/lp/devecosystem-2019/python/
Проксимов
Тут результаты опросника от джетов подъехали
Timur
Всем привет. Вопрос к пользователям фласка: можно ли как-то получить текущий host?
Tishka17
не благодари
denis ⛅️
127.0.0.1
вголос
Tishka17
для продвинутых ::1
tpouuhk
для продвинутых ::1
compname.localdomain для особенных
r
ребят, а где ваша уберконфа на 300 что ли человек?
r
раньше ссылки были, а теперь нету
Tishka17
RO сутки
Dima
Суток мало
Tishka17
я добрый
Dima
👌
Tishka17
кажется, я случайно забанил =D
Tishka17
в общем, я добрый, но телеграмом пользуюсь плохо
Oleksandr
#selenium #xpath #try Вопрос: Есть элемент на веб-странице , находимый (или не находимый по х-пазу). У елемента может быть (или не быть) атрибут 'data-visible' - соответсвенно он может быть 'true' или 'false' пытаюсь определить видимость объекта - если он есть, берем атрибут 'data-visible' , если атрибута нет - считаем его видимым. Почему вот такой код возвращает False, когда атрибут 'data-visible' отсутсвует: if i != '' and visible != vcheck: vi = 'false' xpath = f'//*[@id="{i}"]' #print (xpath) element = time_xp(context, xpath) #если элемент есть: if element is not None: vi = 'true' try: vi = element.get_attribute('data-visible') except: vi = 'true' if vi == 'true': visible = True else: visible = False
Maxym
Здравствуйте, помогите с авторизацией в Гугл. Можно ли авторизоваться через Python имея логин и пароль от почты?
Alexander
Есть ли смысл параллелить скачивание большого кол-ва гигабайтных видео с Ютуба? Кажется, что прироста в скорости не должно быть
koder
Есть ли смысл параллелить скачивание большого кол-ва гигабайтных видео с Ютуба? Кажется, что прироста в скорости не должно быть
Есть. Попробуй пару youtube-dl пару в параллель. Просто один поток tcp не может нормально сьесть весь канал
koder
По крайней мере если очень сильно не покрутить размеры буферов и параметры тсп стека
Ruslan
ЧЯДНТ (именно одновременное пополнение и получение не удается совместить) def p(q, pushed, t): for i in range(20): sleep(.2) print(t, i) q.put(i) print('Event: pushed') pushed.set() def g(q, pushed, t): while not pushed.isSet() or not q.empty(): sleep(.5) print(t, q.get()) if __name__ == '__main__': # mp.set_start_method('spawn') pushed = Event() q = mp.Queue() p0 = mp.Process(target=p, args=(q, pushed, 'P_Pusher')) p1 = mp.Process(target=g, args=(q, pushed, 'P_Puller1')) p2 = mp.Process(target=g, args=(q, pushed, 'P_Puller2')) ...start...join...
koder
откуда event импортируется?
koder
@ruslan001 ^
koder
если о коде, то лучше, наверное, ложить в очередь массив событий, а не по одному - тогда не будет мороки с евентом
Ruslan
Я знаю что не так! Имена переменных - непонятное УГ
это черновик для проверки того что мне нужно
koder
threading
вот и ответ. а у тебя процессы, у каждого будет свои независимый event
koder
https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Event
koder
если ты накидываешь элементы в очередь и пытаешься их читать оттуда только по евенту, то куда проще будет накидывать их в массаив и ложить массив в очередт
koder
а с другой стороны тупо делать q.get()
koder
и выкинуть евент нафиг
Ruslan
если ты накидываешь элементы в очередь и пытаешься их читать оттуда только по евенту, то куда проще будет накидывать их в массаив и ложить массив в очередт
нет, евент нужен чтобы раньше времени цикл чтения не завершился тоесть клда чтение обогнало пополнение
Ruslan
евент на то что пополнения больше не будет
Tishka17
А. Евент только в главном процессе используется
Ruslan
ложи в очередь маркер конца
но как только один из процесов возмет этот маркер - другие не узнают о нем
koder
А. Евент только в главном процессе используется
нет, во всех, вот только это эвент из threading :)
Tishka17
koder
но как только один из процесов возмет этот маркер - другие не узнают о нем
ок, в таком варианте евент имеет смысл (хотя я бы брал его и ложил обратно, наверное)
Ruslan
https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Event
эхх, а автокомлит не увидел Event в multiprocessing щас поменяю
koder
А нах там проверка на q.empty()?
взведенный эвент говорит что больше не будет новых данных, а это проверка на то что ничего не осталось в очереди с рейсом, конечно :D
koder
та ну) неочень, но вариант конечно
на самом деле норм, с остальными тебе нужно аккуратно делать что бы рейсов не было
koder
тот факт что очередь не пустая не означает что ты из нее что-то прочитаешь
Ruslan
на самом деле норм, с остальными тебе нужно аккуратно делать что бы рейсов не было
я щас понял почему этот вариант плох вот почему: while not pushed.isSet() or not q.empty(): тут его не заюзать
Ruslan
разве что лепить локальную переменную всеравно не нравится
koder
текущий код может повиснуть в дедлоке на g.get()
koder
я щас понял почему этот вариант плох вот почему: while not pushed.isSet() or not q.empty(): тут его не заюзать
это и не надо совершенно. делаешь вечный цикл, в котором делаешь x = q.get() если x - маркер конца - ложишь его обратно и выходишь, если нет - обрабатываешь
koder
Положи столько сколько воркеров.
это требует сделать за количеством воркеров. Но если оно известно, то тоже норм
Tishka17
Только "клади"
Ruslan
Ну и пусть
и процесс завершится т.к. не обнаружит маркер
koder
он зависнет в get
Tishka17
и процесс завершится т.к. не обнаружит маркер
Процесс должен завершаться только когда обнаружит маркер
Kamil
если внутри запущенного (.start()) потока упало исключение, оно может проброситься в основной поток?