Форум сайта python.su
user555Вот пример функции “Чтение”
Если Вы мне поведали про моноширинные шрифты, просветите тогда пожалуйста, что тут (в моём коде) будет функция и как она будет возвращать данные из алгоритма “Поиск” в алгоритм “Запись”.
import pandas as pd def read_data(ifname): data = pd.read_csv(ifname, delimiter=',') return data def run_all(): data = read_data('data.csv') print(data) run_all()
>>> def number2(x): ... return x * x ... >>> def number3(x): ... return x * x * x ... >>> n_2_2 = number2(4) + number2(5) >>> n_3_3 = number3(4) + number3(5) >>> >>> n_2_2 41 >>> n_3_3 189 >>>
>>> def number2(x): ... return x * x ... >>> def number3(x): ... return number2(x) * x ... >>> n_2_2 = number2(4) + number2(5) >>> n_3_3 = number3(4) + number3(5) >>> >>> n_2_2 41 >>> n_3_3 189 >>>
user555Код у тебя неправильно сделан. Он сделан, как у новичка. Именно поэтому он не переделывается на отдельные какие-то шаги.
Если Вы мне поведали про моноширинные шрифты, просветите тогда пожалуйста, что тут (в моём коде) будет функция и как она будет возвращать данные из алгоритма “Поиск” в алгоритм “Запись”.
Или такой код вообще не встроить в Ваш пример и нужно прям детально всё разрабатывать под функции?
Отредактировано py.user.next (Июль 2, 2024 04:34:21)
Офлайн
py.user.next
Разобрался (если это так можно назвать) с функциями. Это очень мощный инструмент. Перепишу всё под функции, используя их по максимуму. Сразу сделаю с алгоритмом “Очистка”. Изучу генераторные функции.
Я безусловно в эту ветку еще напишу (если её тут не закроют), как закончу.
Спасибо, что так просто потратили столько своего времени на меня. Вы просто гений.
py.user.nextПрям в точку, прям про меня.
Незнание языка программирования и неспособность формулировать детерминированные алгоритмы в совокупности чаще всего и приводят к неспособности запрограммировать что-то при полной уверенности, что проблема только в незнании языка.
Отредактировано user555 (Июль 3, 2024 00:44:16)
Офлайн
user555Эти функции (генераторные) нужны для оптимизации. Пока кода нет основного, оптимизировать нечего.
Изучу генераторные функции.
>>> def f(): ... out = [] ... out.append(1) ... out.append(2) ... out.append(3) ... return out ... >>> for i in f(): ... print(i) ... 1 2 3 >>>
>>> def g(): ... yield 1 ... yield 2 ... yield 3 ... >>> for i in g(): ... print(i) ... 1 2 3 >>>
def loop(): while True: yield 1 for i in loop(): print(i)
Отредактировано py.user.next (Июль 3, 2024 05:08:03)
Офлайн
py.user.nextКак выяснилось, не умею я рисовать кошек, получаются стулья без ножек.
на самом деле там скрывается какой-то пробел в тумане, который ты не заметил
10 0.10 53023 - 100
11 0.11 443 270 -
12 0.12 443 240 -
13 0.13 443 210 -
10 0.10 53023 - 100
11 0.11 443 210 -
12 0.12 443 240 -
13 0.13 443 210 -
14 0.14 443 210 -
15 0.15 53023 - 105
16 0.16 443 210 -
py.user.nextВопроса 1: А если нехватку памяти я не испытываю, это обязательно делать? Или сама процедура выделения памяти занимает значительное время, что может сказаться на скорости выполнении?
Эти функции (генераторные) нужны для оптимизации. Пока кода нет основного, оптимизировать нечего.
for i in range(0, 1000): if i%2==0: summ = 0 for j in range(i, 1000): summ = summ + j print(summ, file=open("summ.txt", "a")) print(i, file=open("i.txt", "a"))
Отредактировано user555 (Июль 4, 2024 19:36:24)
Офлайн
user555Клиент передает ACK - это номер байта с которого он готов читать дальше данные, соответственно до этого номера остальные он принял, если он будет слать серверу один и тот же ACK, то сервер по идее должен передавать данные с того номера, который ждет клиент, и окно при этом должно уменьшатся, пока клиент не передаст следующий ACK
Необходимо предусмотреть еще один алгоритм слежения за последовательностью seq или анализ подтверждений “ACK” (которые я опрометчиво выбросил из данных).
Поэтому я доработаю всё это дело уже самостоятельно.
Офлайн
xam1816Да, так и есть. Например сервер передаст 1, 2, 3, 4, 5, 6-ю последовательность данных. Клиент получит все, кроме 2 и он пришлёт ack, что ожидает со 2-й последовательности, при этом 3-6-ю последовательность он принял и поместил буфер (опция SACK).
xam1816Там более сложный алгоритм и окном клиента управляет клиент, а не сервер. Может пакеты теряются по пути и в этом виноват не клиент, а канал передачи данных. Клиент будет уменьшать окно например тогда, когда он не успевает передавать данные приложению и буфер заполняется, т.е пакеты приходят быстрее, чем приложение клиента их успевает их обрабатывать. Об этом он будет сообщать серверу, что бы тот корректировал передачу данных и впустую не слал данные, которые не будут приняты.
если он будет слать серверу один и тот же ACK, то сервер по идее должен передавать данные с того номера, который ждет клиент, и окно при этом должно уменьшатся, пока клиент не передаст следующий ACK
Отредактировано user555 (Июль 4, 2024 21:16:02)
Офлайн
user555Ну хорошо, что хоть код писать не начал, а то пришлось бы его выкидывать в итоге. Только опыт написания бы остался. Дикие данные (есть учебные данные, а есть дикие данные) вообще сложно обрабатывать и их сначала надо правильно проанализировать. Потому что в учебных данных всегда всё красиво получается, так как это специально подобранные данные и пройденные человеком (даже если они сложные и находятся в задаче со звёздочкой). Чтобы дикие программы писать, надо опыт набирать на диких программах. Потому что там дикие данные, которые не будут тебя слушаться и могут быть вообще не обрабатываемыми.
Еще раз теперь более внимательно посмотрев свой алгоритм я обнаружил, что не учел особенности работы “выборочного подтверждения” и еще много условий
user555Оно не к нехватке памяти приводит, а к паузам. Сначала оно читает из файла и сохраняет в памяти, потом оно читает из памяти, обрабатывает в памяти и сохраняет обработанное в памяти, потом оно читает обработанное из памяти и сохраняет в файл. То есть несколько раз она пишет по 700 мегабайт.py.user.nextВопроса 1: А если нехватку памяти я не испытываю, это обязательно делать? Или сама процедура выделения памяти занимает значительное время, что может сказаться на скорости выполнении?
Эти функции (генераторные) нужны для оптимизации. Пока кода нет основного, оптимизировать нечего.
user555Если ты не плавал никогда, вообще никогда в воде не оказывался, когда там под ногами ничего нет, а только с берега всегда смотрел, как другие там плавают или просто плескаются, то на твой вопрос “как переплыть реку, ширина которой триста метров?” тебе ответят “не надо этого делать, потому что ты утонешь где-то метров через десять, ещё даже не доплыв никуда, даже до середины реки”. Почему тебе так ответят? Потому что, чтобы уметь плавать, надо это делать постоянно: сначала в ванной, потом в бассейне, потом в озере со стоячей водой, потом в маленькой речке с течением, потом можно плыть до буйков и обратно где-то там, не дальше. То есть надо пройти все эти этапы обучения. И только после этого можно смотреть на реку в триста метров шириной. Но сначала лучше попробовать реку в двадцать метров шириной, а то и с ней может не получиться.
Вопроса 2: Если в переделах алгоритма мне необходимо выполнить параллельные вычисления, то как это сделать, что бы оптимизировать скорость выполнения?
…
Как сделать так, что бы цикл i продолжил выполняться, не ожидая завершения расчётов при выполнении условия if?
Отредактировано py.user.next (Июль 5, 2024 08:37:20)
Офлайн
py.user.nextЭто да, я уже понял что мне такие вопросы еще рано задавать. Спасибо.
С чего ты взял, что ты куда-то поплыть можешь?
py.user.nextОбязательно попробую.
Ну вот возьми ради интереса к тому, что ты можешь и чего ты вообще не можешь, напиши программу с параллельными действиями (не надо ничего вычислять, просто любое действие), которая вот параллельно делает что-то там в несколько потоков. То есть попробуй написать элементарную программу с параллельными действиями.
Офлайн