@ru_python

Страница 8973 из 9768
Nite
09.05.2019
12:17:25
хочу добавить переменную, ктороая подобна существующей

но с другими свойствами

Aragaer
09.05.2019
12:17:38
а здесь у читателей random access по сути

Denis
09.05.2019
12:17:59
Почему рандом? Они не первую живую запись читают?

Google
Aragaer
09.05.2019
12:18:13
нет

Nite
09.05.2019
12:18:25
timer = pygame.time.Clock() x=y=0 # координаты for row in level: # вся строка for col in row: # каждый символ if col == "-": pf = Platform(x,y) entities.add(pf) platforms.append(pf) x += PLATFORM_WIDTH #блоки платформы ставятся на ширине блоков y += PLATFORM_HEIGHT #то же самое и с высотой x = 0 #на каждой новой строчке начинаем с нуля total_level_width = len(level[0])*PLATFORM_WIDTH # Высчитываем фактическую ширину уровня total_level_height = len(level)*PLATFORM_HEIGHT # высоту camera = Camera(camera_configure, total_level_width, total_level_height)

Aragaer
09.05.2019
12:18:28
они могут зареквестить любую запись и получить ее, если она все еще есть в буфере

Denis
09.05.2019
12:18:47
А как реквестить? По номеру, по хэшу?

Aragaer
09.05.2019
12:18:54
по таймстемпу

Denis
09.05.2019
12:19:02
=, >=?

Aragaer
09.05.2019
12:19:14
интервал

Denis
09.05.2019
12:19:41
Деревом поиска можно

Nite
09.05.2019
12:19:46
2.7

Aragaer
09.05.2019
12:19:47
ну условно "а дайте мне запись из интервала от 15 до 17 секунд назад"

Denis
09.05.2019
12:19:52
Все операции за логарифм

Aragaer
09.05.2019
12:19:56
не, как искать понятно

да и даже последовательно не так страшно

Google
Aragaer
09.05.2019
12:20:40
меня в принципе напрягает такая идея, что "не чувак, ты захотел слишком старое, мы это уже выкинули"

Denis
09.05.2019
12:21:03
Если напрягает, не выкидывай

Aragaer
09.05.2019
12:21:21
размер ограничен, а операция записи должна всегда быть успешной

и вовремя

Denis
09.05.2019
12:21:59
Вовремя подразумевает wait-free или необязательно?

Aragaer
09.05.2019
12:22:16
да

Denis
09.05.2019
12:22:34
Тогда сложно

Aragaer
09.05.2019
12:23:18
особенно беда с потенциальными гонками при обращении читателя к чему-то древнему

он может получить или "нету уже, удалили", или же успеет ухватить, а тогда писателю писать некуда

Denis
09.05.2019
12:23:53
Ну лок фри делается на кольцевом буфере вроде, а вейт фри не знаю

Vad
09.05.2019
12:24:29
кто юзал openpyxl для excel таблиц в питоне? как сделать ширину колонок под содержимое? (autofit) в доках и кастомные методы не работают

Denis
09.05.2019
12:24:44
И hazard pointer для защиты от удаления

Aragaer
09.05.2019
12:25:15
ну так вот защита от удаления и означает "некуда писать"

это эмбеддед, к тому же без динамического выделения памяти

Denis
09.05.2019
12:25:51
А объект помещается в машинное слово?

Aragaer
09.05.2019
12:26:58
нет

размер объекта порядка килобайта

Denis
09.05.2019
12:27:42
Если в очереди помещается не меньше объектов, чем всего ридеров, hazard pointer справится

Aragaer
09.05.2019
12:31:56
ну это как раз и есть "я захватил, модифицировать нельзя". И да, удаление должно быть все-таки по возрасту

Google
Aragaer
09.05.2019
12:32:09
то есть нельзя удалить более молодую запись, если более древнюю держит какой-то ридер

хотя я подумаю над этим

Denis
09.05.2019
12:32:28
Потому что он ее сейчас обрабатывает

Aragaer
09.05.2019
12:33:33
ну вот сейчас моя позиция это "если захвачено, то это явно ошибка в алгоритме, поэтому так дальше жить нельзя, эксепшн и досвиданья"

Denis
09.05.2019
12:34:34
В смысле? Он же не моментально отрабатывает

Он захватил и заснул, в это время новое добавилось

Aragaer
09.05.2019
12:35:17
в смысле "у нас в буфере есть место под 100 записей. Если нашелся ридер, которому почему-то нужна аж 100-я, то это явно какой-то косяк в алгоритме"

и если не косяк, то надо увеличивать буфер

Denis
09.05.2019
12:35:55
То есть ридер обязан отработать мгновенно?

Aragaer
09.05.2019
12:36:11
100 записей приходят не сразу, а в определенном предсказуемом темпе

ридеры тоже должны работать в определенном предсказуемом темпе

Aragaer
09.05.2019
12:36:46
то есть нагрузка должна быть ровной и равномерной (эмбеддед же), без пиков

Denis
09.05.2019
12:36:48
Тогда это совсем другая задача

Я думал, что лок фри надо

Aragaer
09.05.2019
12:38:22
ок. Попробую переформулировать. Есть один или несколько райтеров, каждый из которых со стабильным темпом кладет записи в буфер. Соответственно можно сразу сказать, какое время записи в буфере живут - размер буфера делим на скорость появления новых записей.

Denis
09.05.2019
12:39:04
Тогда просто выбираем первую подходящую запись и читаем ее

Aragaer
09.05.2019
12:39:21
каждый ридер независимо от других обращается к разным записям, как правило относительно текущего таймстемпа, но не всегда им нужна самая последняя запись - некоторым (алгоритм такой) нужны в том числе и более старые

Denis
09.05.2019
12:39:52
Он может несколько посмотреть?

Aragaer
09.05.2019
12:40:01
то есть "дайте мне запись свежее таймстемпа 100500" и "дайте мне запись из интервала 100400-100450"

Google
Aragaer
09.05.2019
12:40:03
может

Denis
09.05.2019
12:40:21
Ну вот, пусть начнет с самой ранней и идет вперед

Aragaer
09.05.2019
12:40:30
то есть если ему очень сильно надо, он может к себе утянуть (скопировать) запись, чтобы все стало легче. Но копирования хочется избежать

то есть он инплейс смотрит запись, что-то у себя считает и так далее

Admin
ERROR: S client not available

Aragaer
09.05.2019
12:41:24
как именно он это делает - вопрос ридера, ридеры могут быть разными, но каждый должен (ожидается) успевать на текущем буфере отрабатывать с учетом нагрузки системы

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

нагрузка оказалась выше расчетной, ридер не успел отработать, что-то еще.

фишка с тем, что ридер может прийти с запросом "хочу запись от таймстемпа 123456", а система видит, что такой записи _еще_ нет, поэтому ридер блочится -- это так, бонус.

Denis
09.05.2019
12:44:47
Ну пусть в спинвейте крутится

Aragaer
09.05.2019
12:45:00
кондвар можно, не проблема

Iva
09.05.2019
12:50:24
Есть такая фича в питоне чтобы последнее выражение в методе было возвращаемым значением?

Denis
09.05.2019
12:51:32
Нет

F̦̮̦͍́ o̹̟̩r̨̮͈ ̘͕̥͓d̙͓̀ ̖̱̟en͖͍̼̘̺̣̘
09.05.2019
12:51:57
Vladislav
09.05.2019
12:51:59
Привет, а никто не знает "hacky" способ чтобы сделать сделать асинхронные функции (сопрограммы) само-awaitable ? (т.е. чтобы не нужно было каждый раз дописывать слово await) (с этим постоянно проблемы)

Vladislav
09.05.2019
12:53:04
А зачем тогда вообще асинк?
чтобы не ждать ответа от сервера - быстрее

F̦̮̦͍́ o̹̟̩r̨̮͈ ̘͕̥͓d̙͓̀ ̖̱̟en͖͍̼̘̺̣̘
09.05.2019
12:53:11
эх, если бы придумали асинхронный по дефолту язык..

Google
Iva
09.05.2019
12:53:23
эрланг?

Denis
09.05.2019
12:53:26
чтобы не ждать ответа от сервера - быстрее
Ты ж его синхронно хочешь запустить

Vladislav
09.05.2019
12:53:31
(хочу именно в проект на aiohttp впихнуть) (знаю что есть greenlet, но уже есть готовый код)

Iva
09.05.2019
12:53:49
эрланг - модель акторов, она ассинхронна по дефолту

Vladislav
09.05.2019
12:53:51
да, но сделать сущность, которая без await бы возвращала данные из сопрограммы

что-то по типу asyncio.run, только для каждой корутины

Vladislav
09.05.2019
12:55:10
http://zderadicka.eu/functional-fun-with-asyncio-and-monads/
спасибо большое, сейчас посмотрю

Iva
09.05.2019
12:56:05
монадическая семантика с мапом и флатмапом скорее всего что ты хочешь

Iva
09.05.2019
12:56:49
тебе await нужно будет только в самом конце, няп что там написано

Vladislav
09.05.2019
12:57:25
понял, спасибо. Какой-никакой - выход, но еще не уверен что это подойдет

Nite
09.05.2019
13:06:28
может ли кто нибудь объяснить новичку - что есть что на конкретном примере

Страница 8973 из 9768