
Yegor
08.12.2018
09:24:07

Oleksandr
08.12.2018
09:24:16

Yegor
08.12.2018
09:24:48
Задача такова. Нужно мультипроцессорно писать в файл
то-есть чтоб тридцать тредов строились в очередь и писали в файл

Google

Oleksandr
08.12.2018
09:25:18

Yegor
08.12.2018
09:26:19
лучше бы по делу...

Oleksandr
08.12.2018
09:26:38

Yegor
08.12.2018
09:27:16

Denis
08.12.2018
09:27:31

Yegor
08.12.2018
09:27:37

Oleksandr
08.12.2018
09:28:04

Yegor
08.12.2018
09:28:11
хотя, я в курсе как

Denis
08.12.2018
09:28:30

Yegor
08.12.2018
09:28:37
26000 файлов в одной папке это нормально?

Matvey
08.12.2018
09:28:57
def parse(i=0, meta=[]):
num_of_childs = line[i]
num_of_meta = line[i + 1]
for child_num in range(num_of_childs):
i, meta = parse(i + 2)
meta += line[i+2:i+2 + num_of_meta]
i += num_of_meta
return i, meta
Почему этот код работает и считает сумму меты у всех детей? По идее, ссылка на мету в цикле должна перезаписываться, но этого не происходит и она передаётся дальше в глубь

Oleksandr
08.12.2018
09:28:59

Google

Denis
08.12.2018
09:29:22
У тебя 26000 процессов?

Yegor
08.12.2018
09:30:28

Denis
08.12.2018
09:30:53

Yegor
08.12.2018
09:31:02
да, я уже понял что тупонул
файлы будут по количеству тредов

Oleksandr
08.12.2018
09:32:11

Yegor
08.12.2018
09:34:33
дело в том что я вообще классов боюсь
и не всегда понимаю
и записи в файл я чет не вижу в скрипте

Nikolay
08.12.2018
09:39:26
Меня тут ждали?
?

Костя
08.12.2018
09:40:46
она изнутри перезаписывается и переходит наружу

Nikolay
08.12.2018
09:41:20

Костя
08.12.2018
09:42:20
сегодня задание попроще чем вчера как по мне... вчера подня сидел разбирался пока понял какой алгоритм надо использовать

Matvey
08.12.2018
09:44:10
Оно же вызывается без аргумента meta, и если не указал, что мету передаю, оно должно создавать новый список, как дефолт аргумент, или это не так работает?

Костя
08.12.2018
09:46:11
блин а я не знал, что листы можно складывать) думал только екстендом можно)
и внешняя потом перезаписывается на результат

Google

Костя
08.12.2018
09:55:52
какой-то странный результат выходит, это точно правильное решение?

Matvey
08.12.2018
09:56:15
На 1, да
Но почему после цикла они соединяются в итоге, а не присваивается результат последнего вызова

Костя
08.12.2018
09:57:05
у меня другой ответ))
может я не то в лайн передаю

Yegor
08.12.2018
09:57:40
Как вот в этом узнать имя процесса???
with Pool(pools_amount) as p:
p.map(get_contacts, go_to_links())
тоесть в функции get_contacts я хочу знать имя процесса

Matvey
08.12.2018
09:57:44
Лайн - список интов исходных

Костя
08.12.2018
09:58:50
а должно быть 138, если 1 часть

Matvey
08.12.2018
10:00:56
Нужна сумма последнего

Костя
08.12.2018
10:01:29
тогда, это второе, а там правильный 66)
Спойлер к елке 8 день!
вот мой говнокод к этому, но все работает
def second():
def get_data(all_numbers):
q_child_nodes, q_metadata = all_numbers.pop(0), all_numbers.pop(0)
children = defaultdict(int)
meta = []
value = 0
for child_node in range(q_child_nodes):
all_numbers, child_value = get_data(all_numbers)
children[child_node+1] = child_value
for times in range(q_metadata):
meta.append(all_numbers.pop(0))
for child in meta:
if children:
value += children[child]
else:
value += child
return all_numbers, value
print(get_data(numbers))
лол, каунер убрал, не нужен он тут

Aragaer
08.12.2018
10:04:16
норм задачко сегодня

Matvey
08.12.2018
10:05:31
Сейчас вторую пишу, а мы индекс ребёнка считаем от корня всего дерева или от локального родителя?
По примеру не очень понятно

Костя
08.12.2018
10:06:47

Matvey
08.12.2018
10:07:41
Окей, спасиб

some_random_anonymous
08.12.2018
10:07:42
Что-то какая-то лёгкая сегодня задача. Вчера я например думал куда дольше. Или может расслабленно себя ощущаю в субботу. ?

Костя
08.12.2018
10:07:57
но все равно доволен, что полдня не убито))

Google

some_random_anonymous
08.12.2018
10:12:45
Такая классическая задача на рекурсию. Её можно студентам или школьникам давать, чтобы поняли рекурсию.

Aragaer
08.12.2018
10:21:22
вот так вот если без ensure

Tishka17
08.12.2018
10:23:20

Aragaer
08.12.2018
10:24:40
я больше всего времени потратил на то, как в списке по индексу обращаться, потом взял вектор 8)

SetazeR
08.12.2018
10:26:32

Tishka17
08.12.2018
10:27:32
Обход дерева - классика

Admin
ERROR: S client not available

Tishka17
08.12.2018
10:27:44
А факториал через рекурсию - странно все же
Его даже определение итеративно даётся

SetazeR
08.12.2018
10:28:21
факториал как пример что можно и итеративно, и рекурсивно

Tishka17
08.12.2018
10:29:05
С ним сложно понять "а зачем это"

SetazeR
08.12.2018
10:29:57
ну может быть
если не рассказывать что-то типа
9!=9*8!=9*8*7! и т.д.

Yegor
08.12.2018
10:35:22
Не сложноватое. Ты думать не хочешь
В общем я нашел решение. В нем воркеры выстраиваются для записи в файл.
with open(ff, 'a') as file:
with Pool(processes=3) as pool:
for result in pool.imap_unordered(get_contacts, go_to_links()):
file.write(str(result))
такая фигня

Tishka17
08.12.2018
10:36:25

Google

Yegor
08.12.2018
10:36:55
я с него не читаю, только пишу в него
и запись в файл десятки раз выше чем поход на сайт

Tishka17
08.12.2018
10:38:25
Эм

Yegor
08.12.2018
10:38:32
скажем так, воркеров у меня будет 30ть штук, Один поход на сайт не меньше секунды. Уверен на сто процентов что запись в файл производится быстрее чем 30 строк в секунду

Tishka17
08.12.2018
10:38:38
Может лучше в разные файлы тогда записать?
А потом объединить

Yegor
08.12.2018
10:38:51
смысл?

Tishka17
08.12.2018
10:38:57
И не париться с синхронизацией
Ну я думал ты их читаешь
А так смысл делать общий ресурс, когда все независимо

Yegor
08.12.2018
10:39:42
я читаю в начале программы другой файл со ссылками на страницы, он к этому не имеет никакого дела
а это получится исходный файл который я потом в итоге переформатирую уже в любой удобоваримый формат

Tishka17
08.12.2018
10:42:13
Ну и пиши отдельные файлы, потом переформатируешь
Чё париться

TpouHuK
08.12.2018
10:42:46
Как в питоне найти максимальную разность между двумя рядомстоящими элементами списка? (Красиво, гарантируется что элементов >=2)
Вот мой некросивый вариант:
it = iter(arr)
next(arr)
print(max(map(lambda a, b: abs(a-b), arr, it)))

Yegor
08.12.2018
10:43:20

Stream
08.12.2018
10:44:14

TpouHuK
08.12.2018
10:45:00

Маришка
08.12.2018
10:45:08

Tishka17
08.12.2018
10:46:10

Маришка
08.12.2018
10:47:39