многопоточность


2 161 просмотр.

Краткое описание видео: .[музыка].всем привет и предваряю ваше негодование.сразу скажу что мы не собираемся.становиться ветеринарами мы собираемся.остановить сопряженными программистами.но для понимания серьезных вещей иногда.приходится обращаться к образности и.сейчас я хочу спросить вас что увидите.правильно вы видите одну овечку ее.задача склонить вас к сну и чтобы крепче.уснуть нам всегда говорили считайте.овечек во сне.но если представить что таких овечек.будет больше то можно сказать что мы.уснем быстрее и так тоже эффективнее.справиться задачей одна овечка или.несколько вечер ответ очевиден четыре.овечки быстрее справиться с этой задачей.чем 1 а теперь давайте представим что.овечка это скрипт она выполняет.определенную задачу она выполнит ее.гораздо медленнее чем это выполнять.четыре скрипта и запускать четыре разных.программ и нецелесообразно до ресурсов.компьютера у вас не хватит но вот.запустить несколько параллельных.выполнений одного и того же скрипта вы.все-таки в состоянии при помощи потоков.потоки выполняют задачу параллельно в.пределах одной программы как вы уже.поняли на примере овечек чем дольше.потоков тем быстрее выполняется задача.но также можно сказать что чем больше.потоков тем больше пожираются ресурсов.компьютера до этого времени мы с вами.работали лишь с одной овечками давайте.теперь попробуем поработать с четырьмя.сразу.давайте сразу перейдем скрипт чтобы.понять о чем я говорю нажмем запись в.административной панели программа.предлагает нам задать количество потоков.по умолчанию стоит 1.но мы можем задать свое количество на.фронт принимаются числовые значения либо.значения из ресурса или из базы но не.принимаются значение из переменной.давайте зададим количество потоков 10.нажмем ok и мы видим как здесь.изменилось количество наших потоков.следующий параметр который присутствует.скрипте в административной панели.количество успешных выполнений как вы.знаем количество то есть количество.потоков не значит качество.в этом мы могли убедиться в из нашего.жизненного опыта поэтому давайте.установим какое количество нам нужно.например если мы укажем что нам нужно.количество 20 то каждый поток будет.выполнять по 2 раза один и тот же скрипт.но это в среднем конечно если поток.очень активный то он может выполнять и 3.задачи и 4 и 5 в зависимости от того.насколько свободные остальные потоки.здесь же чуть ниже мы видим количество.неудачных выполнений стоит сразу.предупредить что если программа выдает.ошибку то поток автоматически.перезапускается и пробует все выполнить.заново вы можете установить количество.таких попыток и это количество задается.в пункте неудачных выполнений давайте.выставим наибольшее число отлично теперь.мы имеем скрипт который по идее должен.20 раз выполнить том что мы ему задали.однако это работает немного не так с.точки зрения программирования все будет.работать корректно но с точки зрения.обывателя вам может показаться что.скрипт работает неправильно например.если мы сейчас попробуем вывести в лог.какую-то фразу например привет мир то.она выведится 29 раз выполнить добавить.жмем ok давайте остановим скрипты про.экспериментируем жмем запуск и смотрим.29 as скрыт успешно выполнил работу не.это число мы задавали верно сейчас я.даже не хочу объяснять принцип работы.потому что это все равно сложно для.запоминания для новичков тем более.давайте просто сделаем следующее зайдем.скрипт и в самом начале установим.проверку узнаем сколько успешных 1.и кто же выполнил работу и сделаем.проверку если количество успешных 1.равно количеству которому мы задавали то.останавливаем скрип сделать это можно.следующим образом зайдем в статистику.скрипта получим количество успешных.выполнений числовое количество.выполнений запишется в переменную секс с.намбер жмем ok теперь нам необходимо.сделать проверку заходим в логику.скрипта ждем iv и выбираем нашу.переменную секс с намбер давайте.проверим равна ли она количество 20.жмем ok теперь нам нужно сказать что.если количество успешных выполнений уже.равно 20.то нужно остановить скрипт для этого.сделаем следующее вернемся на главный.экран.зайдем в логика скрипта и выберем.функцию прервать скрипт выставим.параметры завершить скрипты мгновенно.также можем задать сообщения которые.сигнализируют об ошибке.например давайте напишем что лишнее.выполнения удалены нажмем ok хорошо.теперь давайте запустим этот скрипт.нажмем остановить и запустим и теперь мы.видим требуем а нам количество раз 20.именно столько успешном выполнении мы.задавали с вами самом начале мы можем.убедиться в этом проверив лоб и посчитав.количество успешных выполнений делайте.такую проверку в каждом скрипте если.используете многопоточность теперь.давайте сделаем следующего содержания.скрипт усовершенствуем log.пусть скрипт сообщает в каком потоки вот.сейчас работает давайте удалим ненужный.нам блок кода сделаем следующее зайдем.статистику скрипта и узнаем номер потока.переменную запишется номер потока.переменная будет называться сайт яндекс.жмем выполните добавить жмем ok.а влог вы видим следующее содержание я.нахожусь.фрейд оттоке.нажмем выполнить добавить нажмем ok.остановим скрипт и запустим его заново и.нам снова выдалась количество 20.успешных выполнений как мы и запрашивали.жмем ok и проверяем log.во-первых скрип нам сообщает что лишнее.выполнения удалены во вторых он сообщает.в каком он потоки находился так например.наш скрипт выполняется только в одном.потоке первый поток оказался самым.активным он взял на себя всю задачу.остальным ничего не оставил потоки.всегда жадно берут на себя выполнение.задач то есть если предыдущая задача уже.выполнено он вперед рвется к следующей.таким образом 2 3 4 5 6 7 8 9 и 10.потоки остались с носом и тут же были.завершены программы как мы просили.поэкспериментируйте с потоками на.практике вам станет предельно ясно как.они работают а теперь давайте посмотрим.как потолки ведут себя с ресурсами.зайдем запись и удалим ненужные нам.строки удалим все кроме проверки скрипта.на количество успешных выполнений.создадим ресурс из файла давайте назовем.его тестовый жмем вперед выбираем из.тексте файл и жмем вперед и указываем.что мы будем только читать строки жмем.вперед будем использовать каждую строку.один раз жмем вперед закрываем как вы.уже успели понять каждый поток будет.брать разные строки давайте вам покажу.тот файл который я приготовил для нас.вот этот файл я пронумеровал его от 1 до.20.с новой строчки давайте посмотрим что.будет происходить.первый ресурс будет дать первую строчку.2 ресурс будет дать вторую строчку 3 3 4.4 и так далее.то есть ресурсы в потоке работают.уникальное берут каждую новую строчку.давайте поэкспериментируем как это будет.выводиться в лоб закроем прежде всего.наш файл закроем нашу папку для начала.перезагрузим наш ресурс как того требует.и нас просят указать где находят нас.тексте файл я указываю к нему путь.перехожу.и выбираю этот самый тексте файл жму ok.теперь в ресурсе содержится каждая.уникальная строчка соответствии с.потоком в первом потоке содержится.строчка 1 ресурса во втором потоки.содержится строчка 2 ресурса давайте.проверим как это работает просто выводим.в лог данные этого ресурса жмем лог жмем.данные для ввода для поля.либо за жмем тестовый жмем дальше и тут.нам предлагает выбрать повторное.использование например если вы работаете.в 1 потоки то при каждом прохождении.скрипта заново ресурс будет брать одну и.ту же строку первую первую первую первую.если вы этого не хотите то можете каждый.раз брать новую строку в одном потоке.но поскольку у нас много поток мы не.будем трогать этот параметр нажмем ok.нажмем снова окей и запустим скрипт жмем.ok.смотрим что у нас получилось во первых.20 сообщений совершено.удачно но макей проверяем следующие.сколько у нас потоков завершились.успешно успешно завершились все смотрим.лог поток номер 1 в число один поток.номер номер 1 выявил число 2 поток номер.1 вывел все числа до 20 остальным по.толком не оставил ровным счетом ничего 2.3 4 5 что седьмой восьмой девятый.десятый поток снова остались с носом то.есть если поток шустро он берёт на себя.выполнение сразу нескольких задач.поочередно.конечно по-хорошему все должно было быть.немножко по-другому первый поток должен.был взять число 1 2 поток должен был.взять часа 2 число 2 3 поток должен был.взять число 3 и так далее для нас в.принципе это не играет особой роли.гораздо важнее что у нас выполнилась 20.разных действий и выполнилась успешно.обратите внимание что файл ресурсов в.котором есть данный должен быть сохранен.в формате.youth f8 но никак нюансе жмем сохранить.жмем да отлично давайте посмотрим что.будет если мы зададим количество.успешных выполнений больше чем есть.вообще в данных в самом файле например у.нас здесь всего 20 строчек давайте.посмотрим что будет если мы зададим.количество успешных выполнений в 100.например нажмем ok.также не забудем скорректировать нашу.проверку вместо 20 установим 100 нажмем.ok и теперь давайте посмотрим как.работает этот.эти потоки нажмем запуск нажмем ok.принципе ничего не поменялось 20.требуемых нам успешных выполнений.сделались но скрипт выдал некую ошибку.что все данные были обработаны для.ресурса и это справедливо согласитесь.ведь ресурс в отдельном потоке каждый.раз берет новую строчку но если строчек.недостаточно то ему не откуда их брать и.скрипт вынужден вам сообщить что все.данные в ресурсе закончены вот таким.нехитрым образом и работает потоки а на.этом я с вами прощаюсь до следующего.видео.нет где-то в других программах это.универсальный цикл вас он работает по.определенному принципу это довольно.интересно будет но давайте мы сегодня на.этом закончим вы дома потренируетесь.как следует и мы уже приступим к.следующему занятию спасибо большое что.мне слушали подписывайтесь на мой канал.ставьте лайки.с вами был олег тут мне очень приятно с.вами работать

многопоточность

Как? Вы еще не смотрели? Ну это зря...