Нотатки програміста
175 subscribers
24 photos
8 videos
9 files
45 links
Кидаю нотатки й думки з роботи, як Senior Full Stack Developer, Tech Leader, Team Leader і лектор IT)

Огляд технологій, пояснення, новини, проходження співбесід, реклама цікавих додатків і компаній, і багато іншого!

Більше: https://linktr.ee/alex.demko
Download Telegram
Вітаю! 😃

Symfony - це один з найпопулярніших фреймворків на мові програмування PHP

Він був створений у 2005 році і з того часу став одним з найбільш популярних інструментів для створення веб-програм на PHP

Symfony базується на принципах моделі-контролера (MVC) і є дуже гнучким та розширюваним

Фреймворк Symfony має велику кількість вбудованих компонентів, які дозволяють розробникам створювати різні функціональні додатки зі значно меншими зусиллями)

Symfony пропонує відкрите джерело коду та велику спільноту розробників, яка постійно вносить нові зміни і покращення в фреймворк

Це дозволяє отримувати доступ до великої кількості інформації та допомоги у разі потреби

Symfony також підтримує англійську та українську мови, що дозволяє створювати додатки, які легко інтегруються з різноманітними системами та можуть бути доступними для користувачів з різних країн

Крім того, Symfony пропонує широкий вибір інструментів для тестування додатків, що дозволяє забезпечити високу якість програм і допомагає зменшити кількість помилок під час розробки 😌

Symfony є ідеальним вибором для проектів будь-якої складності, від невеликих блогів до великих корпоративних систем

Завдяки цьому веб-додатки, розроблені з використанням Symfony, є надійними та стабільними)

Однією з найбільш сильних сторін Symfony є його підтримка PHP стандартів PSR (там є багато версій його; вони сприяють створенню більш доступного та єфективного PHP-коду)

Symfony також пропонує інтеграцію з багатьма іншими інструментами та фреймворками, такими як Doctrine, Twig, Swift Mailer та багатьма іншими

Ось чому Symfony є досить популярним інструментом у різних проектах 😉
🔥3👏2
Зразок коду з Symfony:

```PHP 👇👇👇
// src/Controller/ProductController.php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class ProductController extends AbstractController
{
/**
*
@Route("/product/{id}", name="product_show")
*/
public function show($id)
{
$product = $this->getDoctrine()
->getRepository(Product::class)
->find($id);

if (!$product) {
throw $this->createNotFoundException(
'No product found for id '.$id
);
}

return $this->render('product/show.html.twig', ['product' => $product]);
}
}
```


У цьому прикладі коду створюється контролер ProductController, який містить метод show, що обробляє запити на URL /product/{id} ({id} - це дані, які передадуть по цій силці, наприклад: /product/10)

Метод show використовує об'єкт Doctrine для отримання продукту з бази даних та передає його дані в шаблон product/show.html.twig для відображення

Якщо продукт не знайдений в базі даних, метод викидає помилку NotFoundException

Шаблон product/show.html.twig містить HTML та Twig-синтаксис для відображення деталей продукту, отриманих з бази даних:
$product) {
throw $this->createNotFoundException(
'No product found for id '.$id
);
}

return $this->render('product/show.html.twig', ['product' => $product]);
}
}
```


У цьому прикладі коду використовуються вбудовані функції Symfony для взаємодії з базою даних та відображення контенту

Загальний підхід Symfony до розробки дозволяє розробникам зосередитися на реалізації бізнес-логіки своїх додатків, замість того, щоб детально розбиратися у взаємодії з базою даних та іншими компонентами...

Узагальнуючи, Symfony є потужним та розширюваним фреймворком, який дозволяє розробникам ШВИДКО та МАКСИМАЛЬНО ПРОСТО (ну, на скільки це можливо) створювати високоякісні веб-додатки з відкритим кодом

Його гнучкість та широкі можливості роблять Symfony одним з найбільш популярних фреймворків для розробки веб-додатків на PHP

Рекомендую спробувати його! Упевнений, що тобі буде просто вивчити його 😌 але, якщо у тебе будуть будь-які питання - можеш написати мені в особисті) я допоможу тобі 😉
@alex_demko_work


Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#php
👍6🤩2
Вітаю! 😃️️️️️️

До речі, якщо ти спеціалізуєшся на Symfony, можеш написати ось цій людині: https://www.fiverr.com/testgorilla?source=inbox

Це акаунт команди testgorilla (https://www.testgorilla.com) платформа, яка створення для того, щоб можливо було наймати працівників зі впевненістью, що вони знають тему, на яку їх беруть (тобто, це платформа з тестами, які є замість резюме) 😉️️️️

Їм зараз треба розробник який працював мінумум 3 роки на роботі на повній зайнятості, їм потрібен експерт

Треба зробити 104 питання для тесту про Symfony)
Зарплата за виконання роботи - також на рівні

Так що, якщо тобі цікаво - реєструйся на Fiverr - та вперед!)


Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#interesting
🔥8🤩1
Вітаю! 😃️️️️️️

SQLite, PostgreSQL, MySQL та MongoDB - це популярні системи управління базами даних (СУБД), що використовуються в сучасній розробці програмного забезпечення)

Кожна з них має свої переваги та недоліки, і вибір правильної бази даних залежить від конкретних потреб вашого проекту

У цій статті ми дослідимо різницю між цими чотирма менеджерами 😌️️️️


SQLite:

SQLite - це легка, безсерверна (вона зберігається у вигляді файлу) система управління базами даних, яка часто використовується в мобільних додатках та невеликих веб-сайтах

Як я памʼяютаю, її навіть Телеграм використовує, щоб на твоєму пристрої зберігати дані переписок)

Оскільки SQLite не потребує налаштування сервера, його дуже легко встановити та використовувати

SQLite також підтримує багато мов програмування та має добру підтримку для транзакцій та індексів (поняття в SQL)

Через це, мені набагато простіше показати тобі приклад роботи з SQLite на Python)

Звернення до бази даних SQLite в Python виконується за допомогою модуля `sqlite3` (його треба імпортувати через: pip install sqlite3 , або pip3 install sqlite3

Давайте розглянемо приклад створення бази даних SQLite та вставки даних у таблицю


import sqlite3

# Відкриваємо з'єднання з базою даних
conn = sqlite3.connect('example.db')

# Створюємо курсор
cursor = conn.cursor()

# Створюємо таблицю
cursor.execute('''CREATE TABLE users
(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')

# Додаємо користувачів у таблицю
users = [(1, 'John', 25),
(2, 'Kate', 30),
(3, 'Alex', 28)]

cursor.executemany('INSERT INTO users VALUES (?,?,?)', users)

# Зберігаємо зміни
conn.commit()

# Закриваємо з'єднання
conn.close()


У цьому прикладі ми створили базу даних з назвою example.db (це простий пустий файл, який можна просто створити на компʼютері, або через редактор коду) та створили таблицю users з трьома стовпцями: id, name та age

Потім ми вставили три рядки у таблицю за допомогою методу executemany(), що дозволяє додавати декілька рядків за один раз та знаки питання допомагають робити це безпечно, щоб хакери не поламали нашу базу даних)

На останок, ми зберегли зміни за допомогою методу commit() та закрили з'єднання з базою даних

Для вибірки даних з таблиці ми можемо використовувати метод fetchall()

Давайте розглянемо приклад вибирання данних всіх користувачів з таблиці users


import sqlite3

# Відкриваємо з'єднання з базою даних
conn = sqlite3.connect('example.db')

# Створюємо курсор
cursor = conn.cursor()

# Вибираємо всіх користувачів
cursor.execute('SELECT * FROM users')

# Отримуємо результат вибірки
users = cursor.fetchall()

# Виводимо результат
for user in users:
print(user)

# Закриваємо з'єднання
conn.close()


У цьому прикладі ми використали метод execute() для виконання запиту SELECT * FROM users, що вибирає всі рядки з таблиці users

Потім ми отримали результат за допомогою методу fetchall()

Пройшлись по всім даним завдяки циклу (вони у нас будуть у вигляді списку) та вивели їх в консоль

А потім закрили зʼєднання)
Ось такий невеличкий приклад роботи з SQLite, сподіваюсь тобі було корисно та зрозуміло 😌️️️️

Однак, SQLite не підходить для великих веб-проектів, які вимагають багато одночасних з'єднань з базою даних

Він також не має підтримки для багатокористувацьких систем управління базами даних


PostgreSQL:

PostgreSQL - це потужна, відкрита система управління базами даних, яка підтримує великий набір функцій та може використовуватися для будь-якого розміру проекту

PostgreSQL є безпечною та надійною, яка підтримує транзакції та запити з високою потужністю обробки даних.

PostgreSQL має гнучку архітектуру, яка дозволяє розширювати його функціональність за допомогою додаткових модулів

Він також має дуже активну спільноту, яка постійно вдосконалює та оновлює систему 😌️️️️

На мою думку, він найбільше використовується у Django (це фреймворк для Python)

Однак, PostgreSQL вимагає певних знань та досвіду для належного налаштування та управління базою даних
🤩6❤2🔥1🤯1
Він також може бути трохи повільнішим за інші системи управління базами даних, особливо при виконанні складних запитів

Але це, знову ж таки залежить від того, які запити ти будеш робити 😉️️️️️️


MySQL:

MySQL - це одна з найпопулярніших відкритих систем управління базами даних, яка використовується в багатьох веб-проектах

Переважно з мовою програмування PHP

Вона має широку підтримку та легку установку, тому її досить просто використовувати

MySQL є досить швидкою системою, яка дозволяє обробляти великі обсяги даних

Вона також має гнучку архітектуру та багато додаткових функцій, які дозволяють розширювати її функціональність

Однак, MySQL має свої обмеження

Вона не дуже підходить для великих проектів з багатьма одночасними з'єднаннями, оскільки може стати непотужною в таких ситуаціях

Крім того, MySQL може бути вразливою до атак безпеки, якщо не належно настроєна


MongoDB:

MongoDB - це документоорієнтована система управління базами даних, яка використовується для зберігання та обробки невеликих, надто складних даних

MongoDB не використовує традиційні таблиці, а замість цього зберігає дані у вигляді документів

MongoDB має дуже гнучку схему, що дозволяє додавати нові поля до документів без необхідності змінювати всю базу даних

Вона також має дуже швидкі читання та записи даних, що робить її ідеальним вибором для веб-додатків з великими обсягами даних

На мою думку її найбільш використовують з Node.js (розширенням для звичайного JavaScript)

Однак, MongoDB не має підтримки для транзакцій, що може бути серйозним обмеженням для проектів, які потребують суворої цілісності даних

Крім того, MongoDB може вимагати більш великого обсягу пам'яті компʼютера, для ефективної роботи, що може збільшувати вартість його використання для компанії


Висновок:

Отже, вибір системи управління базами даних залежить від багатьох факторів, таких як:
- Розмір проекту
- Обсяг даних
- Кількість одночасних з'єднань та потреба в суворій цілісності даних

Кожна з цих систем має свої переваги та обмеження, тому важливо ретельно вивчити їх перед вибором системи управління базами даних для свого проекту))

Ось так ось 😌️️️️


Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#sql
🔥9❤2🤩1
Вітаю! 😃️️️️️️

Зробив тут для однієї групи проект)

Хотів би з тобою поділитися 😉️️️️️️

Проект портфоліо, написаний з використанням препроцесорів, webpack та Node.js (а точніше: Express.js)

Для запуску проекту - завантаж папку та напиши в терміналі npm install (але перед цим - завантаж Node.js на свій компʼютер за цим посиланням: https://nodejs.org/en)

А потім у терміналі перейди в папку dest (напиши команду cd dest) та запусти сервер: node server.js

ВІТАЮ!!! 🥳️️️️️️
Тепер ти перейшовши за посиланням: localhost:8000 можеш дивитися на цей проект))

Більше того скажу!
Можеш перейти за посиланням localhost:8000/login та написати в логін: root і там де пароль: root

І ти війдеш у адмін панель, де зможеш контролювати всі проекти на портфоліо))

А далі - цей сайт можеш оптимізовувати та покращувати! 😃️️️️️️

Завантажити всі шрифти на сайт, зробити авто-префікси, покращити SEO та багато іншого

Але це вже я залишаю на твій вибір)
Користуйся сайтом на здоровʼя 😌️️️️

Бажаю вдачі!!!
І якщо щось не запрацювало - можеш мені написати сюди: @alex_demko_work 😉️️️️️️


Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#web
🤩7🔥2👏1
І ще!!!

Дякую вам!!!

Нас більше 100 за такий короткий період часу) як же я радий, що вам подобається цей контент та ви активно ним користуєтесь 😌️️️️️️

Чесно, сподіваюсь, що ви з насолодою читаєте кожен день ці пости)

Хочу для вас робити кращий та ще якісніший контент

Так що ми не зупиняємось!

Далі буде більше та ще цікавіше 😉️️️️️️🤗️️️️️️
❤17👍6
Вітаю! 😃

Фреймворки Angular, Vue та React – це три найбільш популярних інструментів для розробки веб-додатків на сьогоднішній день)

А точніше для створення SPA (Single Page Application) - це сайти, які зроблені з одного HTML-файлу і все… більше HTML-файлів нема

У цій статті ми розглянемо їх особливості та переваги 😌


Angular – це повноцінний фреймворк для розробки веб-додатків

Він був розроблений компанією Google та випущений у 2010 році

Angular забезпечує розробникам потужні інструменти для створення складних веб-додатків, а саме: SPA (Single Page Application) та PWA (Progressive Web Application)

Про PWA напишу окрему статтю

Angular використовує TypeScript (мову програмування, яка дозволяє створювати типізований, безпечний та структурований код; він у кінці переробляється в JavaScript)

Angular також забезпечує широкі можливості для тестування, що дозволяє розробникам перевіряти якість свого коду перед випуском

Однак, Angular має високий поріг входу, тому що він має велику кількість концепцій, які потрібно зрозуміти перед початком розробки

Іншими словами: Angular краще використовувати, коли у тебе буде дуже великий та довгостроковий веб-додаток

У маленьких, або середніх проектах він буде занадто великим… будеш більше мучитися з Angular, ніж використовувати його фішки 😉


Vue – це простий та легкий у використанні фреймворк для розробки веб-додатків

Він був створений в 2014 році одним розробником з Китаю, Еваном Ю

Vue має просту структуру та дозволяє розробникам швидко створювати веб-додатки)

Vue має вбудовану систему компонентів, що дозволяє розробникам легко організовувати свій код

Крім того, Vue дозволяє використовувати JSX – синтаксис, який дозволяє створювати компоненти з використанням HTML-подібного синтаксису

Vue також має широку базу спільноти та плагінів, що дозволяє розширювати його можливості (наприклад, NuxtJS, Vuetify та інші)

Однак, Vue не має такої потужності, як Angular, тому його використовують переважно для створення легких проектів 😌


React – це ще один популярний фреймворк для розробки веб-додатків

Він був розроблений компанією Facebook (зараз Meta) та випущений у 2013 році

React використовується для створення SPA, а також для розробки мобільних додатків з використанням React Native

React має просту структуру та дозволяє розробникам швидко створювати веб-додатки

Він використовує JSX та Virtual DOM – технології, що дозволяють розробникам легко організовувати свій код та зберігати стан додатку

Саме завдяки Virtual DOM наш React став популярним

Ця технологія забезпечує відслідкування змін у КОНКРЕТНОМУ елементі (цю ж технологію використовує Vue)

А Angular, на жаль, так робити не може…

React також має велику базу спільноти та плагінів, що дозволяє розширювати його можливості (наприклад, Redux, MaterialUI, Styled Components)

Однак, React не має такої потужності, як Angular, тому він може бути менш корисним для розробки дуже складних проектів

Але у нього більше потужності та налаштувань, ніж Vue

Ось чому його використовують переважно у середніх проектах)


Отже, які фреймворки варто використовувати?

Все залежить від конкретних потреб проекту та ваших власних знань та навичок)

Angular може бути корисним для створення дуже складних проектів, які потребують високої потужності та безпеки

Vue може бути корисним для створення маленьких та середніх проектів, які потребують швидкості та легкості використання

React може бути корисним для створення середніх (навіть, у принципі й у маленьких та великих) по масштабам проектів та мобільних додатків, а також для проектів, які потребують швидкості та легкості використання

Крім того, варто враховувати, що кожен фреймворк має свої власні способи роботи та концепції, тому важливо вивчити їх перед використанням 😉

Тепер, як тільки ми подивилися теоретичну частину, можемо подивитися невеличку практику по кожному фреймворку:



Ось приклад компонента на Angular, який відображає список елементів зі списку, переданого як вхідний параметр:

import { Component, Input } from '@angular/core';

@Component({
selector: 'app-list',
🤩5🤓2❤1
template: `
<h2>{{ title }}</h2>
<ul>
<li *ngFor="let item of items">{{ item }}</li>
</ul>
`,
})
export class ListComponent {
@Input() title: string;
@Input() items: string[];
}


Цей код описує компонент ListComponent, який містить два вхідних параметри: title та items

Компонент відображає заголовок та список елементів items, використовуючи директиву *ngFor (саме завдяки ній ти можеш зробити цикл по кожному елементу в масиві та вивести їх)

Компонент може бути використаний також і в інших компонентах, шляхом написання тегу <app-list> (ми його написали, там де була стрічка: selector: ‘app-list’) 😉

Angular має багато інших можливостей для створення складних веб-додатків, таких як маршрутизація, обробка подій, робота з формами та багато іншого


Ось приклад компонента на Vue, який також відображає список елементів зі списку, переданого як вхідний параметр:

<template>
<div>
<h2>{{ title }}</h2>
<ul>
<li v-for="item in items" :key="item">{{ item }}</li>
</ul>
</div>
</template>

<script>
export default {
name: 'ListComponent',
props: {
title: String,
items: Array
}
}
</script>

Цей код описує компонент ListComponent, який також містить два вхідних параметри: title та items

Компонент відображає заголовок та список елементів items, використовуючи директиву v-for (саме завдяки ній ти можеш зробити цикл по кожному елементу в масиві та вивести їх)

Компонент може бути використаний в інших компонентах шляхом включення тегу <list-component> (ми його написали, там де була стрічка: name: ‘AppComponent’)

Vue також має багато інших можливостей для створення складних веб-додатків, таких як маршрутизація, обробка подій, робота з формами та багато іншого)

Як ти бачиш, усе дуже схоже, тільки можливості та написання - трішки різне 😌


А ось приклад компонента на React, який також відображає список елементів зі списку, переданого як вхідний параметр:

import React from 'react';

function ListComponent(props) {
return (
<div>
<h2>{props.title}</h2>
<ul>
{props.items.map(item => <li key={item}>{item}</li>)}
</ul>
</div>
);
}

export default ListComponent;

Цей код описує функціональний компонент (компонент написаний завдяки слову function) ListComponent, який має два вхідних параметри: title та items

Компонент відображає заголовок та список елементів items, використовуючи метод map для проходженні по масиву та відображає кожен елемент на сайті

Компонент може бути використаний в інших компонентах шляхом включення тегу <ListComponent> (тому що, ми таким словом назвали назву функції: function ListComponent(props) {)

Як ти міг здогадатися, React також має багато інших можливостей для створення складних веб-додатків)


Ось так ось!
Як бачиш, усе дуже схоже одне на одне 😌

Так що, вибирай, те що тобі легше та цікавіше - і дізнавайся про цю технологію більше) 😉


Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#web
🔥9👍4🤩1
Вітаю! 😃

Кому цікаво, як відправити свій сайт в Інтернет!

І ще, щоб на нього міг знайти будь-хто!

І! Абсолютно БЕЗКОШТОВНО - є два сервіси)

Vercel (https://vercel.com) і Netlify (https://www.netlify.com)

Кому цікаво, щоб я зробив пост, як можна відправити сайт на одному з цих сервісів - ставте: 👨‍💻




Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#web
👨‍💻21🔥4
Media is too big
VIEW IN TELEGRAM
Вітаю! 😃

Ось і довгоочікувальний пост про сайт-портфоліо та Vercel)

Коротенька інструкція, як можна відправити свій сайт в Інтернет, та щоб усі його побачили 😌️️️️️️

Кому цікаво, як налаштувати GitHub, поставте 👨‍💻




Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#web
👨‍💻20🔥8
Вітаю! 😃️️️️️️


Python - це мова програмування, яка підтримує різні методи паралельної обробки даних, включаючи асинхронність, багатопоточність та багатопроцесорність)

У цій статті ми розглянемо основні відмінності між цими технологіями та їхні використання у Python 😌️️

Але для кращого розуміння рекомендую зрозуміти так слова, як "потік" (декілька "операції", які ідуть одна за одною) та "операція" (дія), "процес" (виконання потока; або декількох потоків)


Асинхронність у Python

Асинхронне програмування - це стиль програмування, що дозволяє виконувати багато різних операцій в одному потоці, без блокування виконання інших операцій

За допомогою асинхронної обробки можна зменшити час очікування на відповідь від зовнішнього ресурсу (сайт, база даних, API, ...)

У Python, для асинхронного програмування використовуються асинхронна бібліотека asyncio

За допомогою неї можна створювати асинхронні функції)


Багатопоточність у Python

У Python, багатопоточність дозволяє одночасно виконувати кілька потоків у межах одного процесу

Потоки можуть ділити спільний доступ до ресурсів, таких як пам'ять та файлові системи тощо

Багатопоточність може бути використана для парелельної обробки даних, а також для створення інтерактивних додатків, що можуть відповідати на запити користувача в режимі реального часу


Багатопроцесорність у Python

Багатопроцесорність дозволяє виконувати кілька процесів одночасно на різних ядрах процесора (це дозволяє розвантажити компʼютер та зробити так, щоб він не зламався від перенавантаження 😊)

У Python, для багатопроцесорної обробки можна використовувати модулі multiprocessing та concurrent.futures

Використання багатопроцесорності може дозволити значно зменшити час виконання складних обчислень, таких як наукові розрахунки та обробка великих обсягів даних


Різниця між асинхронністю, багатопоточністю та багатопроцесорністю

Основна відмінність між цими технологіями полягає у тому, як вони забезпечують паралельну обробку даних

Асинхронність дозволяє виконувати багато різних операцій в одному потоці, не блокуючи виконання інших операцій

Багатопоточність дозволяє виконувати кілька потоків у межах одного процесу, ділячи спільний доступ до ресурсів

Багатопроцесорність дозволяє виконувати кілька процесів одночасно на РІЗНИХ ЯДРАХ ПРОЦЕСОРУ, але через це в елементів нема спільного доступу до ресурсів, але швидкість виконання коду зростає)

Інша відмінність полягає в тому, що асинхронність та багатопоточність використовують один процесор, тоді як багатопроцесорність використовує кілька процесорів

Це означає, що використання багатопроцесорності може дозволити забезпечити більш ефективну паралельну обробку даних

Використання асинхронності, багатопоточності та багатопроцесорності має декілька вбудованих бібліотек

Для роботи з асинхронністю використовують бібліотеки asyncio та aiohttp

Для роботи з багатопоточністю можна використовувати бібліотеки threading та concurrent.futures

Для роботи з багатопроцесорністю можна використовувати бібліотеки multiprocessing та concurrent.futures

Наприклад, для використання асинхронного програмування на Python, можна використовувати бібліотеку asyncio

За допомогою цієї бібліотеки можна створювати корутини (функції, які працюють асинхронно), які можуть виконуватися асинхронно

Корутини можуть бути виконані у межах одного потоку, що дозволяє зменшити навантаження на створення нових потоків

Крім того, використання асинхронності дозволяє забезпечити більш ефективне використання ресурсів, оскільки програма може продовжувати виконуватися, коли чекає на відповідь від зовнішнього ресурсу

Для використання багатопоточності на Python можна використовувати бібліотеку threading

За допомогою цієї бібліотеки можна створювати декілька потоків, які можуть працювати паралельно в межах одного процесу

Кожен потік може виконувати свою власну задачу, що дозволяє збільшити продуктивність програми

Проте, при використанні багатопоточності, необхідно пам'ятати про синхронізацію потоків, щоб уникнути конфліктів при доступі до спільних ресурсів!
😍3🔥2
Для використання багатопроцесорності на Python можна використовувати бібліотеку multiprocessing

За допомогою цієї бібліотеки можна створювати декілька процесів, які можуть працювати паралельно

Кожен процес має свій власний обсяг пам'яті та може виконувати свої власні задачі, що дозволяє збільшити продуктивність коду

Проте!!!
При використанні багатопроцесорності також необхідно пам'ятати про синхронізацію процесів та як відбувається обмін даних між ними)

Також, бібліотека concurrent.futures може бути використана як для роботи з багатопоточністю, так і з багатопроцесорністю

Вона дозволяє легко створювати паралельні задачі та керувати ними за допомогою потоків або процесів)
⚡3🤩2
Один з прикладів асинхронного програмування на Python - це паралельне виконання запитів до декількох веб-сервісів

В цьому прикладі ми використовуємо бібліотеку aiohttp для здійснення запитів та asyncio для асинхронного виконання функцій)

python
import asyncio
import aiohttp

async def fetch_data(session, url):
async with session.get(url) as response:
data = await response.json()
return data

async def main():
urls = [
'https://jsonplaceholder.typicode.com/todos/1',
'https://jsonplaceholder.typicode.com/todos/2',
'https://jsonplaceholder.typicode.com/todos/3'
]

async with aiohttp.ClientSession() as session:
tasks = [fetch_data(session, url) for url in urls]
results = await asyncio.gather(*tasks)

print(results)

if name == '__main__':
asyncio.run(main())


У цьому коді ми створюємо функцію fetch_data, яка здійснює запит до вказаного URL (посилання) і повертає отримані дані у форматі JSON (схожого на тип даних словник)

Далі ми створюємо головну функцію main, в якій визначаємо список URL-адрес для запиту та створюємо об'єкт ClientSession з бібліотеки aiohttp

Далі ми створюємо список задач tasks, які бажаємо виконати асинхронно

Кожна задача є запитом до веб-сервісу, використовуючи функцію fetch_data та об'єкт ClientSession

Ми передаємо цей список задач у функцію asyncio.gather, яка виконує всі задачі паралельно та чекає, поки всі задачі завершаться

У нашому прикладі ми отримуємо результати у вигляді списку, який містить результати всіх запитів

Ти можеш змінити список URL-адрес на будь-який інший список, який відповідає твоїм потребам 😉
⚡4👨‍💻1
Один з прикладів багатопоточного програмування на Python - це створення декількох потоків для виконання декількох задач одночасно

У цьому прикладі ми використовуємо бібліотеку threading, щоб створити декілька потоків і запустити їх для виконання функцій

python
import threading

def print_numbers():
for i in range(10):
print(i)

def print_letters():
for letter in ['a', 'b', 'c', 'd', 'e']:
print(letter)

if name == '__main__':
t1 = threading.Thread(target=print_numbers)
t2 = threading.Thread(target=print_letters)

t1.start()
t2.start()

t1.join()
t2.join()

print("Done!")


У цьому коді ми створюємо дві функції: print_numbers та print_letters

Кожна функція просто виводить послідовність чисел або літер в консолі

Ми створюємо два потока з бібліотеки threading, які вказують, що функція print_numbers та print_letters будуть виконуватись у різних потоках

Після створення потоків ми запускаємо їх за допомогою методу start()

Потім ми використовуємо метод join() для чекання завершення потоків перед тим, як вивести повідомлення "Done!" у кінці програми

Важливо пам'ятати, що майже будь-яка програма може бути написана багатопоточно, але потребує обережного планування та управління потоками, щоб уникнути проблем з конкуренцією за ресурси інших потоків!
🔥3👨‍💻2
Один з прикладів багатопроцесорного програмування на Python - це створення декількох процесів для виконання декількох задач одночасно

У цьому прикладі ми використовуємо бібліотеку multiprocessing, щоб створити декілька процесів і запустити їх для виконання функцій.

python
import multiprocessing

def print_numbers():
for i in range(10):
print(i)

def print_letters():
for letter in ['a', 'b', 'c', 'd', 'e']:
print(letter)

if name == '__main__':
p1 = multiprocessing.Process(target=print_numbers)
p2 = multiprocessing.Process(target=print_letters)

p1.start()
p2.start()

p1.join()
p2.join()

print("Done!")


У цьому коді ми створюємо дві функції: print_numbers та print_letters

Кожна функція просто виводить послідовність чисел або літер в консолі

Ми створюємо два об'єкти процесів з бібліотеки multiprocessing, які вказують, що функція print_numbers та print_letters будуть виконуватись у різних процесах

Після створення процесів ми запускаємо їх за допомогою методу start()

Потім ми використовуємо метод join() для чекання завершення процесів перед тим, як вивести повідомлення "Done!" у кінці програми

Важливо пам'ятати, що майже будь-яка програма також може бути написана багатопроцесорною, але потребує обережного планування та управління процесами, щоб уникнути проблем з конкуренцією за ресурси інших процесів!
🔥4🤩1