Promise<>
Чтоб перейти к следующему циклу сразу
Promise<>
Чисто псевдокод, идея такая прост
Dmytro
Эм
Promise<>
Непонятно было как лениво это все организовать
Alex
херь какая-то
Dmytro
А зачем лениво?:
Alex
Promise<>
Хороший вопрос, я думал это может помочь решить проблему таким образом
Dmytro
А где проблема?
Promise<>
Вероятно, для моей проблемы будет достаточно найти самый длинный массив, range(len(arr)), 4 элемента добавлять в test_obj, потом obj['tests'].append(test_obj), если какой то элемент пустой - не добавлять его в test_obj
Dmytro
Может таки скажете, в чем заключается проблема?
Promise<>
У нас есть 3 словаря с результатами тестов, 1 словарь - логи, 2 словарь - другие логи, 3 словарь - проверка тестов
В каждом словаре есть ключи, в первом - name, во втором - status test, в третьем - excepted results и actual results
Мы должны сделать 4 словарь, по ключу tests у нас есть массив с тестами
Promise<>
В массиве каждый элемент это 4 параметра, которые я написал в сообщение выше
Dmytro
Словарь с логами например как организован?
id_test: {status: str}?
Alex
в смысле словаря?
Alex
может быть у тебя списки словарей?
Promise<>
{
"logs": [
{
"time": "946684810",
"test": "Test output A",
"output": "fail"
}
]
}
Promise<>
{
"suites": [
{
"name": "suite1",
"tests": 1,
"cases": [
{
"name": "Test output B",
"errors": 0,
"time": "Saturday, 01-Jan-00 00:00:20 UTC"
}
]
}
]
}
Promise<>
{
"captures": [
{
"expected": "B"
"actual": "B",
"time": "2000-01-01T00:00:20+00:00"
},
{
"expected": "A"
"actual": "B",
"time": "2000-01-01T00:00:10+00:00"
}
]
}
Promise<>
вот три словаря
Promise<>
нужно объеденить их в четвертый
fourth_dict = {'tests': [ ]}
Alex
zip(a[“logs”], b[“suits”], c[“captures”])
Alex
дальше собирай итоговый словарь и пиши в список или делай yield
Promise<>
почему хотел по одному собирать этот словарь, вдруг значение невалидное, тогда пишем пустую строку в параметр
Alex
ну так и собирай, zip ленивый
Promise<>
for i in range(length_test_class_1):
test_obj = {}
test_obj['name_test'] = test_class_2.suites[i]['name']
test_obj['status_test'] = test_class_1.logs[i]['output']
test_obj['excepted'] = test_class_3.captures[i]['expected']
test_obj['actual'] = test_class_3.captures[i]['actual']
data.test_5['tests'].append({data.prefix + str(i): test_obj})
вот у меня пока такое получилось) но это ужос
Promise<>
а как мне с зипом считать i? у меня же там массив объектов
Promise<>
test_obj['name_test'] = test_class_2.suites[0]['name']
test_obj['name_test'] = test_class_2.suites[1]['name']
итд
Alex
for log, suite, capture in zip(a[“logs”], b[“suites”], c[“captures”]):
test_obj = {}
test_obj[‘name_test’] = suite[‘name’]
…
Aragaer
нинада рейндж по длине
Aragaer
надо enumerate
Alex
не надо enumerate, у него N списков.
Promise<>
TypeError: list indices must be integers or slices, not str
Promise<>
how to fix?
Alex
wicker
Ну ёпта, в гуголь переводчик
Promise<>
class Attributes1:
def __init__(self, json_dict: dict):
for k, v in json_dict.items():
if isinstance(v, dict):
value = Attributes1(v)
else:
k = f'{k}_' if iskeyword(k) else k
value = v
self.__dict__[k] = value
def __repr__(self):
return self.logs
Promise<>
допустим как логи показываем
Aragaer
for i, suite, log, capture in enumerate(zip(test_class_2.suites, test_class_1.logs, test_class_3.captures):
data.test_5['tests'].append({data.prefix+str(i): {'name_test': suite['name'], 'status_test': log['output'], 'excepted': capture['expected'], 'actual': capture['actual']}})
Promise<>
через точку
Promise<>
создаем объект
Promise<>
a.logs => показывает по ключу logs
Alex
так ладно, я спать. у нас тут уже классы пошли на кой-то хрен. но трейсбеки мы читать не умеем.
Promise<>
ок, спасибо за помощ
Promise<>
Promise<>
Promise<>
koder
for i, (suite, log, capture) in ....
koder
@toooobeedo ^
Promise<>
воу
Promise<>
а это круто) спасибо
Anonymous
Привет чат всем
B
Есть питон, есть вим, не работают вместе, шо делать, какие подводные?
Tishka17
в смысле не работают и в смысле вместе?
B
Интеграция питона в вим через джедай
B
я вообше хз, но в любом случае лучше подробнее описать проблему. Что именно не работает, что пробовал, что смотрел
Есть питон 3.7.3 64х, есть вим 8.1.чтотодальше 64х,
хотел внедрить нормальную проверку и дополнение кода, почитал что хорош jedi-vim, выполнил его установку и вим начал обильно ругаться на невозможность инициализации питона,
+python штуки в виме есть,
Команда echo has(python) даёт 0,
Unat
@Kdanylov прошу прощения за, возможно, тупой вопрос, но в тесте asyncio количество загруженных ядер для асинка и тредов было равным? Я перед сном в чат заглянул, меня что-то клинит на том, что асинк в один поток работает.
Unat
О как. А простого синхронного теста не было?
Unat
Без потоков и асинка
koder
@nepherpitou собвственно это совершенно ожидаемый результат.
asyncio выполняет просто безумное количество питон кода на каждый await
сначала ты уходишь вних по славно задизайненному со всеми требуемыми
паттернами стеку вызовов в недра asyncio что бы она сконтруировала тебе Future
потом это future ты везешь обратно по всему своему стеку вызовов до самого loop.
loop регистрирует на него калбек и проделывает вагон метаработы
и всякой фигни. Однажды future исполнится, ему поставят done, вызовется
callback и корутину подвинут в очередь готовых. Потом обратно через весь стек
вниз прокинут результат. Выходит 400+ питоновских инструкций на каждый await.
Каждая примерно по ~50 тактов CPU. или 20к+ тактов. А переключение потоков в
ядре со всем скедуленгом и туда-сюда < 500 тактов. Так и живем
koder
Тест будет полностью лимитироваться латентностью tcp стеков и сетки
Unat
Блин, надо будет завтра поковыряться.
Anonymous
как удалить все папки в которых нету файла ПАРОЛИ ?
Unat
Хм... Для такого теста надо логику менять, в текущем виде асинк будет ждать каждого нового ответа, а потоки будут делать это в N раз чаще.
koder
@nepherpitou
если сервер будет тупить, или если на клиенткой стороне будет еще какая-то активность между приемом и посылкой сообщения, то просто возрастет латентность. Сообщения же не паплайнятся. Но в таком случае ты будешь мерять не совсем то.
но вообще по мере роста количества соединений потокам становится все хуже и хуже, так что если сервер будет тупить и
открытые соединения будут копится - потоки начнут проигрывать постепенно изза повышенного потребления ресурсов при простое. Собвественно на том ноуте где я это тестит больше 20к потоков не удавалось запустить. На текущем работает с 30k,
но дальше уже не.
Tishka17
koder
koder
Unat
Tishka17
Они и так воюют за гил
Tishka17
В общем непонятно
Tishka17
Код теста бы
koder
так они не воюют