Если пользователь сам устанавливал Linux и занимался его настройкой, то он точно знает версию дистрибутива и прочие важные данные, однако может возникнуть необходимость узнать подобную информацию, если вы купили VPS или занимаетесь настройкой системы для знакомых. Во время такой настройки важно знать версию Linux, ведь она дает возможность планировать свои действия, например знание версии, поможет понять, будет ли компьютер подвержен вирусным атакам. Читать
Как сравнить последовательные строки в одной таблице в MySQL
Резюме : в этой статье мы покажем вам, как сравнивать последовательные строки в одной и той же таблице, используя технику самостоятельного соединения.
Предположим, у вас есть таблица inventory, со структурой, определенной оператором CREATE TABLE, следующим образом:
CREATE TABLE inventory( id INT AUTO_INCREMENT PRIMARY KEY, counted_date date NOT NULL, item_no VARCHAR(20) NOT NULL, qty int(11) NOT NULL );
В таблице inventory:
- id — является автоинкрементными колонками.
- counted_date — это подсчитанная дата.
- item_no — код товара, размещенный в инвентаре.
- qty — накопленное количество в запасе.
Ниже приведены примеры данных таблицы inventory:
INSERT INTO inventory(counted_date,item_no,qty)
VALUES ('2019-12-27','A',20),
('2019-12-27','A',30),
('2019-12-27','A',45),
('2019-12-27','A',80),
('2019-12-27','A',100);
Если вы хотите узнать, сколько предметов получено в день для каждого предмета, вам нужно сравнить количество наличных в конкретном дне с его предыдущим днем.
Другими словами, в таблице inventory необходимо сравнить строку с последовательной строкой, чтобы найти разницу.
В MySQL вы можете использовать технику самосоединения (self join) для сравнения последовательных строк как следующий запрос:
SELECT g1.item_no, g1.counted_date from_date, g2.counted_date to_date, (g2.qty - g1.qty) AS receipt_qty FROM inventory g1 INNER JOIN inventory g2 ON g2.id = g1.id + 1 WHERE g1.item_no = 'A';
Условие в предложении INNER JOIN g2.id = g1.id + 1 позволяет, конечно, сравнить текущую строку со следующей строкой в таблице inventory, предполагая, что в столбцах идентификаторов нет пробелов.
Если вы не можете избежать пробела, вы можете создать дополнительный столбец, например, seq, чтобы поддерживать последовательности строк, чтобы применить эту технику.
Из этой статьи вы узнали, как сравнивать последовательные строки в одной и той же таблице, используя технику самостоятельного соединения.
Для чего используется SIM-карта?
Почти каждый существующий сегодня сотовый телефон использует SIM-карту. «SIM» — это сокращение от модуля идентификации абонента. Без этого вы не можете делать или принимать телефонные звонки. Вы также не можете использовать интернет-данные через сотовую связь.
Вы, наверное, уже знали это, но почему ваш телефон так бесполезен без этого маленького куска металла и пластика? Просто для чего на самом деле используется SIM-карта?
Как выглядит SIM-карта
SIM-карту довольно легко идентифицировать. Это пластиковая карточка с четким набором металлических контактов. Внутри SIM-карты вы найдете интегральную схему, которая связывается с телефоном через вышеупомянутые металлические контакты.
SIM-карты бывают разных форм и размеров. На самом деле, всего четыре размера. Самый большой из них известен как «полноразмерный» и фактически устарел. Полноразмерные SIM-карты размером 3,37 на 2,125 дюйма в основном были размером со смарт-картами доступа.
Причина этого довольно интересная. На начальном этапе технологии мобильных телефонов несколько человек использовали один телефон. Идея заключалась в том, что вы вставите свою огромную SIM-карту в телефон, когда захотите ее использовать. Поскольку карта будет проводить больше времени в вашем кошельке, чем в телефоне, большой пластиковый корпус имеет смысл.

В наши дни большинство сим-карт, которые вы купите, имеют все три общих размера, с кусочками пластикового корпуса, отрывающимися до тех пор, пока вы не достигнете желаемого размера. Размер Mini-SIM довольно необычен в наши дни и в основном используется в устаревших устройствах или недорогих устройствах на основе старых конструкций.
Размер Micro-SIM очень популярен, и большинство телефонов используют его. Размер Nano-SIM устраняет практически весь пластиковый корпус вокруг контактов SIM-карты и, по сути, является стандартом для флагманов и смартфонов среднего класса, где внутреннее пространство чрезвычайно дорого. SIM-карты имеют физическую клавиатуру, что делает невозможным их неправильную установку.
Вот совет: не выбрасывайте рамки Mini- и Micro-SIM при получении новой SIM-карты. Если вам когда-нибудь понадобится перенести SIM-карту на другой телефон, они вам могут понадобиться!
Что делает SIM-карта?
Сотовая сеть, принадлежащая вашему поставщику услуг, это просто сеть. Они должны контролировать, кто имеет доступ к этой сети, как по соображениям безопасности, так и для того, чтобы все это работало!

Так что же такое SIM-карта? Ваша SIM-карта является картой доступа. Он содержит ваши учетные данные. Так что в этом смысле это как карта, на которой хранятся ваши имя пользователя и пароль. Вы входите в сотовую сеть с помощью SIM-карты. Ваш номер телефона — это ваша уникальная сетевая идентификация.
Независимо от того, куда вы направляетесь, пока вы находитесь в пределах досягаемости сотовой вышки, принадлежащей вашему поставщику услуг, вы можете связаться с другими.
Что хранится на SIM-карте?
На SIM-карте есть информация, необходимая для аутентификации вашей учетной записи в сети. Одним из них является ICCID или идентификатор карты интегральной схемы . Это номер, который уникален для этой конкретной физической SIM-карты.

Следующий важный бит данных на SIM-карте известен как ключ аутентификации . Это криптографический ключ, используемый для подписи данных, отправляемых в сотовую сеть. Их ключ запускается через криптографическую функцию и затем сравнивается с другим вычислением, выполненным с копией ключа, хранящегося в базе данных оператора. Если они совпадают, вы попадете в сеть.
На SIM-карте также есть память, которую вы можете использовать для хранения ваших контактов и текстовых сообщений. Это довольно ограничено, однако, с большинством SIM-карт, занимающих от 64 до 256 КБ. В наши дни большинству людей лучше хранить свои контакты в собственной памяти телефона вместе с резервной копией, используя что-то вроде iCloud или свою учетную запись Google .
Контрактные и предоплаченные SIM-карты
Обычно сотовые провайдеры используют две модели для продажи своих услуг клиентам. Вы можете подписать договор с фиксированным контрактом или быть клиентом с предоплатой.
В обоих случаях вы получите SIM-карту. Сами карты ничем не отличаются друг от друга. Скорее, именно как поставщик обрабатывает учетную запись, которая выделяет их. Вы можете купить предоплаченные SIM-карты с полки. Хотя во многих странах вы должны зарегистрировать покупку, используя правительственный ID и подтверждение места жительства.

Контрактным SIM-картам распределяются данные, время разговора и другие ресурсы в соответствии с вашим контрактом. Излишки добавляются к вашему счету, и в конце платежного цикла деньги списываются с вашего счета. С картами предоплаты вы обычно загружаете денежную сумму на SIM-карту или иным образом приобретаете время разговора или мобильные данные заранее.
В зависимости от того, где вы живете, некоторые контрактные телефоны могут быть заблокированы для SIM-карт только от этого поставщика. Часто это способ получить телефон с существенной скидкой, но если вам когда-нибудь понадобится использовать другую SIM-карту, возможно, во время путешествий, вы обнаружите, что она не работает! Чтобы избежать такой ситуации, обязательно ищите телефоны, продающиеся как «разблокированные».
Переключение SIM-карт
Взять SIM-карту с одного телефона и переместить ее на другой довольно безболезненно. Учитывая, что оба телефона используют одинаковый размер SIM-карты. Если другой телефон использует больший размер, вам придется использовать адаптер, чтобы он подходил для большего слота. Если SIM-карта, которую вы хотите использовать, слишком велика для целевого телефона, у вас есть два варианта.
Во-первых, сократить размер SIM-карты. Некоторые люди достаточно смелы, чтобы сделать это, используя только ножницы и какой-то шаблон. Если вы случайно врезались в схему SIM-карты, игра окончена, и вам понадобится новая. Самый безопасный способ сделать это — использовать специальный инструмент для резки SIM. Даже в этом случае вы рискуете уничтожить карту, поэтому выбирайте этот маршрут только на свой страх и риск.

Другим вариантом является переключение SIM-карт. Конечно, если вы просто выйдете и купите новую SIM-карту, с ней будет связан другой номер телефона! У каждого поставщика услуг может быть своя процедура перемещения вашего телефонного номера с одной SIM-карты на другую.
В целом, однако, нужно просто принять телефонный звонок и подтвердить вашу личность. Если у провайдера есть физические магазины, у вас даже должна быть возможность зайти на новую SIM-карту с отключенной старой.
В наши дни популярно использовать текстовые сообщения, отправленные на определенные SIM-карты, как форму двухфакторной аутентификации. Так что теперь у нас есть нечто, известное как мошенничество с обменом SIM-карт . Где преступники находят способы передачи вашего номера телефона на SIM-карту, которую они контролируют. Дублирование SIM-карты является еще одним методом. Это, безусловно, что-то, чтобы не упустить.
Жизнь после сим-карт
SIM-карты, по крайней мере, отдельные SIM-карты больше не нужны. Мы уже наблюдаем рост eSIM или встроенной SIM- карты. Это SIM-карта, встроенная непосредственно в телефон. Эта карта является программируемой, что означает, что вы можете легко менять поставщиков или использовать несколько поставщиков одновременно.

В некоторых странах телефоны с двумя SIM-картами пользуются большой популярностью. С ними вы можете иметь два телефонных номера, например, один для личного пользования. Вы также можете иметь специальную SIM-карту для передачи данных, возможно, с лучшими тарифами.
eSIM делает это избыточным и превращает доступ и аутентификацию во что-то похожее на использование фиксированной широкополосной связи. Где вы просто вводите имя пользователя и пароль для доступа к данному поставщику услуг.
Лишь немногие современные телефоны имеют встроенные SIM-карты на момент написания статьи, но ситуация изменится, когда отрасль примет этот новый стандарт. У вашего следующего телефона вполне может быть, что вообще некуда положить SIM-карту, что станет концом эпохи, но, безусловно, движением к лучшему.
PCI Express 4 против PCIe 3: есть ли улучшение производительности?
Благодаря AMD летом 2019 года на наших компьютерах появилось новое оборудование PCI Express, которое обещает графические карты и твердотельные накопители, которые работают быстрее, чем когда-либо. Интерфейс PCI Express 4.0 предлагает удвоенную пропускную способность PCI Express 3.0 (PCIe 3), и он может сделать это для любых плат расширения, которые подключаются к вашей материнской плате. Теперь у нас есть как графические карты, так и твердотельные накопители, совместимые с PCI Express 4 (PCIe 4), доступные в магазинах. Вы можете спросить себя: обеспечивает ли PCIe 4 больше кадров в секунду при игре в игры? Это делает ваши SSD диски намного быстрее? Мы задавали себе те же вопросы, поэтому решили провести анализ производительности, в котором мы сравниваем PCIe 4 с PCIe 3
Как мы тестировали производительность PCI Express
Чтобы увидеть улучшения производительности, представленные PCI Express версии 4, мы использовали следующий тестовый компьютер:
- Процессор: AMD Ryzen 7 3700X (8 ядер, 16 потоков, базовая тактовая частота 3600 МГц, максимальная тактовая частота 4600 МГц)
- Материнская плата: ASUS ROG Crosshair VIII Hero (Wi-Fi)
- Кулер: ASUS ROG Ryou 120
- Память: RGB-память HyperX Predator DDR4 (2 x 8 ГБ, 3600 МГц)
- Видеокарта: ASRock AMD Radeon RX 5700 XT Taichi X 8G OC +
- Хранение: ADATA XPG Gammix S50
- Монитор: изогнутый игровой монитор ASUS ROG Strix XG32VQ (32-дюймовый WQHD 2560 x 1440, 144 Гц)
- Блок питания: ASUS ROG Thor 850W Platinum
- Операционная система: Windows 10 Pro x64 с обновлением ноября 2019 года
Наша материнская плата предлагает отличный BIOS UEFI , с большим количеством опций и настроек, которые вы можете настроить. Среди них вы можете найти и установить версию интерфейса PCI Express, используемую каждым слотом на материнской плате. Чтобы сравнить PCIe 4 с PCIe 3, мы сначала запустили все следующие тесты, сначала используя PCIe 4, который является настройкой по умолчанию. Затем мы настроили UEFI BIOS для ограничения интерфейса PCI Express для графического процессора и SSD на PCIe 3.

Давайте посмотрим, какие результаты мы получили, и дает ли PCI Express версии 4 существенные улучшения по сравнению с версией 3.
PCIe 4 против PCIe 3: вы получаете больше кадров в секунду в играх?
Мы начали с тестирования производительности, предлагаемой графической картой ASRock AMD Radeon RX 5700 XT Taichi X 8G OC + во время Второй мировой войны. Мы использовали Vulkan API и настройки качества графики Ultra. Когда мы использовали PCIe 4, мы увидели небольшое увеличение количества кадров в секунду по сравнению с PCIe 3. Цифры были на 3% лучше, в зависимости от того, на какую метрику мы смотрим: минимальный FPS, средний FPS или максимальный FPS.

Battlefield V — популярная игра, требующая достаточно много аппаратных ресурсов для отображения ее наилучшего качества графики. Для этого мы использовали DirectX 12 API и настройки качества Ultra. Независимо от разрешения, 1440p или 1080p, количество кадров в секунду, которое мы имели, было немного лучше, когда мы использовали PCIe 4 по сравнению с PCIe 3. Однако улучшения были до 2% при измерении среднего количества кадров в секунду.

Shadow of the Tomb Raider — выдающаяся игра с визуальной точки зрения качества. Мы протестировали его, используя DirectX 12, TAA (временное сглаживание) и самые высокие предустановки качества графики. Результаты наших тестов были практически идентичны, независимо от того, использовали ли мы разрешения 1440p или 1080p и PCIe 4 или PCIe 3. Как ни странно, максимальный FPS был выше на PCIe 3, поэтому кажется, что переключение с PCIe 3 на PCIe 4 не не имеет никакого эффекта.

The Division 2 от Tom Clancy предлагает инструмент для сравнительного анализа, который выводит только средний FPS. Используя DirectX 12 и предустановку качества графики Ultra, мы получили такое же количество кадров в секунду при использовании разрешения 1080p с PCIe 4 и PCIe 3. В 1440p PCIe 4 выдавал на 4% больше кадров в секунду, чем PCIe 3.

Metro Exodus — одна из последних игр с высокими требованиями к оборудованию. Полученные нами результаты были неубедительными, и мы не заметили каких-либо улучшений при использовании PCIe 4 вместо PCIe 3.

Мы также тестировали ASRock AMD Radeon RX 5700 XT Taichi X 8G OC + в Fortnite, которая не является требовательной, но очень популярной. Реализация Fortnite DirectX 12 находится на стадии бета-тестирования, и результаты со временем изменятся. Мы заметили улучшение среднего числа FPS до 44% в разрешении 1080p и до 27% в разрешении 1440p.

Мы перешли к Apex Legends, еще одной популярной онлайн-игре Battle Royale. Мы использовали самые высокие настройки качества графики, и результаты, которые мы измерили, снова оказались неубедительными. В этой игре не было значимого влияния при переходе с PCIe 3 на PCIe 4.

За исключением Fortnite, мы не заметили значительных улучшений в количестве кадров в секунду, воспроизводимых в играх. В большинстве игр частота кадров увеличивается на 4% при использовании PCIe 4 вместо PCIe 3. В некоторых играх нет разницы между двумя версиями PCIe.
PCIe 4 против PCIe 3: загружаются ли игры быстрее?
Мы протестировали видеокарту ASRock AMD Radeon RX 5700 XT Taichi X 8G OC + с тестом 3DMark PCI Express. Этот тест измеряет пропускную способность, доступную для графической карты через интерфейс PCI Express. Его результат говорит нам о средней достигнутой пропускной способности и, таким образом, дает приблизительное представление о том, как быстро игры могут передавать данные во время загрузки. Когда мы настроили нашу материнскую плату на использование PCI Express 4, видеокарта имела доступ к средней пропускной способности 23,25 ГБ / с. Ограничение интерфейса PCI Express до Gen 3 означало, что доступная пропускная способность упала до 14,31 ГБ / с. Другими словами, использование PCIe 4 означает, что графическая карта может получить на 39% большую пропускную способность по сравнению с PCIe 3.

Наличие графической карты, поддерживающей PCI Express 4, означает, что вы можете быстрее загружать игры, в которые играете.
PCIe 4 против PCIe 3: Windows 10 загружается быстрее?
Чтобы узнать, ускоряет ли PCIe 4 загрузку Windows 10, мы использовали BootRacer . Наш тестовый компьютер имел одинаковое время запуска независимо от того, настроили ли мы SSATA-накопитель ADATA XPG Gammix S50 на PCIe 4 или PCIe 3.

PCIe 4 против PCIe 3: данные записываются и читаются быстрее на диске?
Мы загрузили и запустили CrystalDiskMark, эталон, который может измерять производительность SSD при чтении и записи данных, как случайных, так и последовательных. Измерения показали, что, хотя случайная передача данных не сильно пострадала, последовательная передача данных значительно лучше, когда вы используете PCIe 4 вместо PCIe 3 для SSD-накопителя. Скорость последовательного чтения данных была до 61% быстрее, в то время как скорость последовательной записи данных была до 46% быстрее.

Наличие твердотельного накопителя PCI Express 4 значительно повышает скорость последовательной передачи данных: от 46% для скорости записи до 61% для скорости чтения.
PCIe 4 улучшает производительность по сравнению с PCIe 3?
Вот что вы получаете, когда используете PCIe 4 вместо PCIe 3:
- Вы получаете более быстрое время загрузки в играх
- Копирование и перемещение больших файлов в Windows 10 быстрее
Однако, когда вы играете в игры, это не влияет на количество кадров в секунду, которое вы получаете. Только в нескольких названиях вы можете увидеть улучшения до 4%. Кроме того, Windows 10 не загружается быстрее при использовании PCIe 4 вместо PCIe 3.
Вы купили оборудование PCIe 4?
Если вы потратили деньги на видеокарту PCIe 4 или твердотельный накопитель, какова была ваша основная причина для этого? Стоило ли оно того в вашем конкретном случае? Мы хотели PCIe 4, потому что, да, в некоторых ситуациях это означает большую производительность. Однако это также означает дополнительные расходы. Прежде чем закончить, расскажите нам свою точку зрения на эту тему в комментарии ниже.
Многопроцессорный модуль Python с примерами
1. Многопроцессорная обработка Python — цель
Сегодня в этой статье по Python мы увидим многопроцессорную работу с Python. Кроме того, мы рассмотрим пакет и структуру многопроцессорной обработки в Python. Кроме того, мы обсудим класс процесса в Python Multiprocessing, а также получим информацию о процессе. Чтобы это произошло, мы заимствуем несколько методов из модуля многопоточности. Наряду с этим мы изучим блокировку и пул класса Python Multiprocessing.
Итак, давайте начнем.
2. Что такое многопроцессорная обработка Python?
Сначала поговорим о параллельной обработке. Это способ одновременно разбивать и запускать программные задачи на нескольких микропроцессорах. По сути, это попытка сократить время обработки и это то, чего мы можем достичь с помощью компьютера с двумя или более процессорами или с использованием компьютерной сети. Мы также называем это параллельными вычислениями.
Итак, теперь перейдем к Python Multiprocessing, это способ повысить производительность путем создания параллельного кода. Производители процессоров делают это возможным, добавляя больше ядер к своим процессорам. В многопроцессорной системе приложения разбиваются на более мелкие подпрограммы для самостоятельной работы. Взгляните на однопроцессорную систему. Учитывая несколько процессов одновременно, он пытается прерывать и переключаться между задачами. Как бы вы себя чувствовали, будучи единственным шеф-поваром на кухне с сотнями клиентов? Вы должны были бы выполнять все обычные задачи от выпечки до замеса теста.
а. Пакет многопроцессорной обработки Python
Многопроцессорная обработка в Python — это пакет, который мы можем использовать с Python для порождения процессов с использованием API, который очень похож на модуль потоков . Благодаря поддержке как локального, так и удаленного параллелизма, он позволяет программисту эффективно использовать несколько процессоров на данном компьютере. Прежде чем мы сможем объяснить вам это, давайте рассмотрим пример пула — объекта, способа распараллеливания выполнения функции по входным значениям и распределения входных данных по процессам. Это параллелизм данных (создайте из этого модуль и запустите его):
from multiprocessing import Pool def f(x): return x*x with Pool(5) as p: print(p.map(f,[1,2,3]))
Хотите узнать, сколько ядер у вашей машины? Попробуйте метод cpu_count().
>> import multiprocessing >>> multiprocessing.cpu_count()
б. Структура многопроцессорной системы Python
Так из чего состоит такая система? У нас есть следующие возможности:
- Мультипроцессор — компьютер с несколькими центральными процессорами.
- Многоядерный процессор — один вычислительный компонент с более чем одной независимой фактической единицей обработки/ядрами.
В любом случае, процессор может выполнять несколько задач одновременно, назначая процессор для каждой задачи.
3. Класс многопроцессорного процесса Python
Давайте сначала поговорим о классе Process в Python Multiprocessing. Это абстракция для настройки другого процесса, позволяющая родительскому приложению контролировать выполнение. Здесь мы наблюдаем методы start() и join(). Давайте сначала возьмем пример.
import multiprocessing
from multiprocessing import Process
def testing():
print("Объектов")
def square(n):
print("Число квадратов в ",n**2)
def cube(n):
print("Количество кубиков в ",n**3)
if __name__=="__main__":
p1=Process(target=square,args=(7,))
p2=Process(target=cube,args=(7,))
p3=Process(target=testing)
p1.start()
p2.start()
p3.start()
p1.join()
p2.join()
p3.join()
print("Мы закончили")
Мы сохранили на нашем рабочем столе, а затем дважды запустили из командной строки.
Давайте разберемся с этим фрагментом кода. Process() позволяет нам создать экземпляр класса Process. start() говорит Python начать обработку. Но тогда, если мы позволим этому быть, это потребляет ресурсы, и мы можем исчерпать их в более поздний момент времени. Это потому, что он позволяет процессу оставаться бездействующим и не завершаться. Чтобы избежать этого, мы вызываем метод join(). При этом нам не нужно убивать их вручную. Присоединение останавливает выполнение текущей программы до завершения процесса. Это гарантирует, что программа ожидает завершения p1 и затем завершения p2. Затем он выполняет следующие операторы программы. И последнее: аргумент ключевого слова args позволяет нам указать значения передаваемого аргумента. Кроме того, цель позволяет нам выбрать функцию для выполнения процесса.
4. Получение информации о процессах
а. Получение идентификатора процесса и проверка работоспособности
Мы можем захотеть получить ID процесса или одного из его дочерних элементов. Мы также можем захотеть узнать, жив ли он еще. Следующая программа демонстрирует эту функциональность:
import multiprocessing
from multiprocessing import Process
import os
def child1():
print("Child 1",os.getpid())
def child2():
print("Child 2",os.getpid())
if __name__=="__main__":
print("Parent ID",os.getpid())
p1=Process(target=child1)
p2=Process(target=child2)
p1.start()
p2.start()
p1.join()
alive='Yes' if p1.is_alive() else 'No'
print("Is p1 alive?",alive)
alive='Yes' if p2.is_alive() else 'No'
print("Is p2 alive?",alive)
p2.join()
print("Мы закончили")
В многопроцессорной среде Python каждый процесс занимает свое собственное пространство памяти для запуска независимо. Завершается, когда целевая функция завершается выполнением.
б. Получение названия процесса
Мы также можем установить имена для процессов, чтобы мы могли получить их, когда захотим. Это сделано для того, чтобы сделать его более читабельным.
import multiprocessing
from multiprocessing import Process, current_process
import os
def child1():
print(current_process().name)
def child2():
print(current_process().name)
if __name__=="__main__":
print("Parent ID",os.getpid())
p1=Process(target=child1,name='Child 1')
p2=Process(target=child2,name='Child 2')
p1.start()
p2.start()
p1.join()
p2.join()
print("Мы закончили")
Как видите, метод current_process() дает нам имя процесса, который вызывает нашу функцию. Посмотрите, что происходит, когда мы не присваиваем имя одному из процессов:
import multiprocessing
from multiprocessing import Process, current_process
import os
def child1():
print(current_process().name)
def child2():
print(current_process().name)
if __name__=="__main__":
print("Parent ID",os.getpid())
p1=Process(target=child1)
p2=Process(target=child2,name='Child 2')
p1.start()
p2.start()
p1.join()
p2.join()
print("Мы закончили")
Что ж, модуль многопроцессорной обработки Python присваивает номер каждому процессу как часть его имени, когда мы этого не делаем.
5. Многопроцессорная блокировка Python
Как и многопоточный модуль, многопроцессорная обработка в Python поддерживает блокировки. Процесс включает в себя импорт Lock, его использование, выполнение чего-либо, а затем освобождение. Давайте взглянем.
В следующем фрагменте кода мы заставляем процесс получить блокировку, пока он выполняет свою работу.
from multiprocessing import Process, Lock lock=Lock() def printer(item): lock.acquire() try: print(item) finally: lock.release() if __name__=="__main__": items=['nacho','salsa',7] for item in items: p=Process(target=printer,args=(item,))
p.start()
Давайте запустим этот код трижды, чтобы увидеть, какие разные результаты мы получаем.
Блокировка не позволяет потокам мешать друг другу. Следующий процесс ожидает снятия блокировки, прежде чем продолжить.
6. Класс многопроцессорного пула Python
Этот класс представляет пул рабочих процессов; его методы позволяют переложить задачи на такие процессы. Давайте рассмотрим пример (Создайте модуль и запустите его).
from multiprocessing import Pool def double(n): return n*2 if __name__=='__main__': nums=[2,3,6] pool=Pool(processes=3) print(pool.map(double,nums))
Мы создаем экземпляр пула и создаем процесс с 3 работниками. map() отображает функцию double и повторяемость для каждого процесса.
Другой метод, который возвращает нам результаты наших процессов в пуле, — это метод apply_async().
from multiprocessing import Pool def double(n): return n*2 if __name__=='__main__': pool=Pool(processes=3) result=pool.apply_async(double,(7,)) print(result.get(timeout=1))
Итак, все это было в многопроцессорной обработке Python. Надеюсь, вам понравится наше объяснение.
7. Вывод — многопроцессорная обработка Python
В этой статье по многопроцессорности Python мы обсудили полную концепцию многопроцессорности в Python. Кроме того, мы рассмотрели пул многопроцессорных процессов Python, блокировку и процессы. Теперь у вас есть представление о том, как использовать ваши процессоры в полной мере.
Переменная SELECT INTO в MySQL
Описание: в этой статье вы узнаете, как использовать переменную SELECT INTO в MySQL для хранения результатов запроса в переменных.
Синтаксис переменной SELECT INTO в MySQL
Чтобы сохранить результат запроса в одной или нескольких переменных , используйте синтаксис переменной SELECT INTO:
SELECT c1, c2, c3, ... INTO @v1, @v2, @v3,... FROM table_name WHERE condition;
В этом синтаксисе:
- c1, c2 и c3 — это столбцы или выражения, которые вы хотите выбрать и сохранить в переменных.
- @ v1, @ v2 и @ v3 — это переменные, в которых хранятся значения из c1, c2 и c3.
Количество переменных должно совпадать с количеством столбцов или выражений в списке выбора. Кроме того, запрос должен возвращать ноль или одну строку.
Если запрос не возвращает строк, MySQL выдает предупреждение об отсутствии данных и значение переменных остается неизменным.
Если запрос возвращает несколько строк, MySQL выдает ошибку. Чтобы запрос всегда возвращал максимум одну строку, используйте условие LIMIT 1, чтобы ограничить результирующий набор одной строкой.
Примеры переменной SELECT INTO в MySQL
Мы будем использовать таблицу customers в примере базы данных для демонстрации.
Пример одной переменной SELECT INTO в MySQL
Следующий оператор получает город клиента с номером 103 и сохраняет его в переменной @city:
SELECT city INTO @city FROM customers WHERE customerNumber = 103;
Следующий оператор отображает содержимое переменной @city:
SELECT @city;
Пример нескольких переменных SELECT INTO в MySQL
Чтобы сохранить значения из списка выбора в несколько переменных, вы разделяете переменные запятыми. Например, следующий оператор находит город и страну клиента с номером 103 и сохраняет данные в двух соответствующих переменных @city и @country:
SELECT city, country INTO @city, @country FROM customers WHERE customerNumber = 103;
Следующий оператор показывает содержимое переменных @city и @country:
SELECT @city, @country;
Пример нескольких строк SELECT INTO в MySQL
Следующая инструкция вызывает ошибку, потому что запрос возвращает несколько строк:
SELECT creditLimit INTO @creditLimit FROM customers WHERE customerNumber > 103;/
Вот вывод:
Error Code: 1172. Result consisted of more than one row
Чтобы исправить это, вы используете следующее предложение LIMIT 1:
SELECT creditLimit INTO @creditLimit FROM customers WHERE customerNumber > 103 LIMIT1;
В этой статье вы узнали, как использовать синтаксис переменной SELECT INTO в MySQL для хранения результата запроса результата в одной или нескольких переменных.
