Нотатки програміста
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
Для використання багатопроцесорності на 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
Висновок 😌

У цій статті ми розглянули різницю між асинхронністю, багатопоточністю та багатопроцесорністю на Python

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

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

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

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

Якщо ти хочеш виконувати багато запитів до зовнішніх сервісів (даних), або до баз даних, асинхронність може бути найбільш оптимальним варіантом)

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

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


Як бачиш, при розробці програм на Python важливо знати різницю між цими підходами та їх можливості, щоб вибрати оптимальний підхід для вирішення конкретної задачі)

Але я тобі спробував пояснити як можна простіше це 😌

Якщо будуть якісь питання додаткові - можеш написати мені особисто 😉 (@alex_demko_work)



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

#python
🔥6💯2
Нотатки програміста
Вітаю! Дякую, що написав Олександру (@thebirdisfreed) Можливо, ти впевнений, що ти розробник middle-senior рівня (Frontend, або Backend) - також можеш написати Олександру) у нього дня тебе буде цікава пропозиція! 😉 (Від мене дякую усім хто написав Олександру…
Вітаю! 😃️️️️️️

Памʼятаєш, я розповідав, про Олександра (@thebirdisfreed), який збирав групу Frontend, або Backend розробників??

Йому потрібна твоя допомога 😌️️️️️️

Якщо ти відчуваєш себе саме на Seniuor Junior - Middle Frontend розробника

То можеш йому написати)

Саме зараз його команді потрібен ти!

Впевнений, що ти зможеш їм допомогти та себе продвинути в програмуванні 😉️️️️

Тому!
Якщо ти впевнений - не зволікай, пиши йому 😉️️️️



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

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

Хочу запросити тебе на свій вебінар по Git та GitHub! 🥳

Це безкоштовний вебінар, так як він перший на цьому каналі, і буде відбуватися прямо тут! У «Нотатках програміста»😌

У вівторок о 19:00 за Києвом (13.06.2023) 😊️️️️️️

Буду радий бачити тебе!

Ми будемо розбирати базу роботи з цими системами

Також, якщо у тебе є запитання - пиши мені в особисті @alex_demko_work
І я спробую їх розглянути на цьому вебінарі 😉️️️️️️

Для твоєї зручності я запишу цей вебінар та через Телеграм його відправлю!
Тож, ти нічого не пропустиш 😌️️️️️️

Ну що?? Зацікавлений?)

Якщо так, то вебінар буде зовсім скоро - підготуй питання, тістечка та чайок на цей час)

А тим часом, можеш подивитися мої минулі вебінари, наприклад: для школи-програмування CURSOR 😉
1.) Розробка професійного JS портфоліо | https://t.me/junior_javascript/1179
2.) Верстка макету з нуля | https://t.me/junior_javascript/1188


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

#webinar
🔥10👍6👏3❤‍🔥2🤩2❤1
Вітаю! 😃

Сьогодні хотів би поділитися з тобою деякими цікавими деталями про Babel та його використання)

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

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

Ось приклад використання Babel у проекті:

Припустимо, ти створив файл “script.js” та “index.html”

У “script.js” ти використовуєш стрілкові функції та spread operator:

const numbers = [1, 2, 3, 4, 5];

const doubledNumbers = numbers.map((number) => number * 2);
console.log(...doubledNumbers);


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

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

Спочатку встанови Babel за допомогою пакетного менеджера npm:

npm install @babel/core @babel/cli @babel/preset-env

Потім створи файл конфігурації Babel “.babelrc” у кореневій папці проекту:

{
"presets": ["@babel/preset-env"]
}

Тепер викличте Babel з командного рядка, щоб зкомпілювати твій код:

npx babel script.js --out-file compiled.js

Тепер ти можеш підключити “compiled.js” у своєму “index.html” і запустити твою програму на будь-якому браузері, який підтримує JavaScript

Це всього лише невеликий приклад використання Babel!

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

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

Спробуй його і дай мені знати, що ти думаєш! 😊


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

#web
🔥8👏1🤩1
Вітаю! 😃

Розумію, що у тебе може буде не багато часу читати мої статті...

Але! Бувають дні, коли замість того, щоб писати щось нове - я тобі можу підказати, що ти міг би перечитати, щоб собі ж повторити 😌️️️️️️

І сьогодні - саме цей день!

Пропоную, тобі перечитати наступні технології

Вони будуть пов'язані з веб-технологіями)

І, сподіваюсь, сподобається тобі 😉️️️️️️


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

#web
👏4🔥3😎1
Ну що ж!) будьте готові))

Уже рівно через 1 годину почнеться наш вебінар!

Усіх чекаю 😉️️️️️️
🔥8⚡1
Розпочинаємо!!! 🥳
❤‍🔥4👏3❤1
git config --global user.name "YOUR NAME"
👍9
git config --global user.email "EMAIL@..."
👍9