170 похожих чатов

Out = [] for bit in list(im.tobytes()): bit

= list(range(0, 256+x, x))[bit//x]
out.append(bit)

как это можно оптимизировать?

list(im.tobytes()) очень большой, заваеи много памяти и обработка занимает много времени

13 ответов

26 просмотров

Оптимизировать в плане? По производительности?

Это какая-то обфускация? Что оно делает?

Выглядит как шифр Цезаря, но чёт лениво разбираться

Полагаю в pillow могут быть готовые фильтры для этого. Либо бери numpy

- заменить list(im.tobytes()) на im.tobytes(). Зачем лишний раз копировать все байты картинки? - bit = list(range(0, 256+x, x))[bit//x] - заменить на формулу, которая вычисляет нужно значение, а не генерирует для этого в памяти список. - ещё можно заменить деление на константу x на умножение на производную константу 1/x. В теории должно быть быстрее. Придётся правда целую часть получать явно через int(...).

KeyZenD-||KeyZenD|| Автор вопроса
Kirill Kuzminykh
- заменить list(im.tobytes()) на im.tobytes(). Зач...

спасибо за совет, но я сделал точь-в-точь как ты расписал, ещё до того как ты написал :)

Если с формулой будут проблемы, то можно перед циклом сгенерировать один раз список который реализует преобразование in_bit в out_bit, а не генрить списки и делать деления на константу для каждого байта

KeyZenD-||KeyZenD|| Автор вопроса
Simon Tokugawa)
Так а что этот код делает?

мне, честно говоря, самому интересно

Ещё можно ради эксперимента заменить список out на bytearray, т.к. итоговый размер известен заранее - будет меньше перевыделений памяти под список при увеличении его размера.

Похожие вопросы

Обсуждают сегодня

Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
лучше скажите, причём тут паскаль?
Alexey Kulakov
22
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
#include <stdio.h> #include <stdlib.h> #include <time.h> int** generate_table(int size_matrix) { int** matrix = (int**)malloc(size_matrix * sizeof(int*)); for (int i ...
Чувак
1
@PerlBanjoBot use v5.38; sub split_on_cond($arr, $cond) { ($a, $b) = ([], []); push @{ $cond->($_) ? $a : $b }, $_ for @$arr; ($a, $b) } use Data::Dumper; warn Dumpe...
Sergei Zhmylove
10
Всем привет! как узнать, что текст в TSkLabel был выведен сокращенным ? Есть функция для TLabel которая позволяет определить , что текст выведен сокращенным function TFrmMai...
DELPHI SOLUTIONS
6
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Дебил? Я ищу друга
Bitard 228
27
У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Карта сайта