πŸ“šPython Books
33.7K subscribers
1.13K photos
3 videos
93 files
1.12K links
πŸ“šPython Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

admin - @haarrp

@ai_machinelearning_big_data - машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

@programming_books_it - бСсплатныС it ΠΊΠ½ΠΈΠ³ΠΈ

@pythonl - 🐍

@ArtificialIntelligencedl - AI

@datascienceiot - ml

РКН: clck.ru/3FmsTi
Download Telegram
БСсплатный ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ β€” 850 страниц.

Β«The Rising Sea: Foundations of Algebraic GeometryΒ» Π Π°Π²ΠΈ Π’Π°ΠΊΠΈΠ»Π°.


Книга ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π°Π»Π³Π΅Π±Ρ€Π°ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ ΠΈ мноТСство ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

ВрСбуСтся ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ инструмСнты вводятся ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° β€” ΠΎΡ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ ΠΈ ΠΏΡƒΡ‡ΠΊΠΎΠ² Π΄ΠΎ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΈ гомологичСской Π°Π»Π³Π΅Π±Ρ€Ρ‹.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ построСн Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΡŽ.

Бамодостаточный ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ для студСнтов магистратуры ΠΈ аспирантуры, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½Ρ‹ΠΉ справочник для исслСдоватСлСй.


Link: https://math.stanford.edu/~vakil/216blog/
πŸ”΄ Π—Π°Π²Ρ‚Ρ€Π° тСстовоС собСсСдованиС Π½Π° Middle Python с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΈΠ· Авито

Π£ΠΆΠ΅ Π·Π°Π²Ρ‚Ρ€Π° Π²Π΅Ρ‡Π΅Ρ€ΠΎΠΌ Π² 19:00 ΠΏΠΎ мск
ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ собСсСдованиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° настоящСС ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ Π½Π° Middle Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Как это Π±ΡƒΠ΄Π΅Ρ‚:
πŸ“‚ Даня, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² Авито, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ вопросы ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ-Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΡ†Ρƒ
πŸ“‚ Даня Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ рСспондСнта, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Π΅Π³ΠΎ ΠΎΡ‚ вас ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ
πŸ“‚ Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Ρ‚ΡŒ любой вопрос Π”Π°Π½Π΅

Π­Ρ‚ΠΎ бСсплатно. Π­Ρ„ΠΈΡ€ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… мСнторской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ ШОРВКАВ для Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ свой Π³Ρ€Π΅ΠΉΠ΄, Π—ΠŸ ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒ скиллы.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈ Π² нашСго Π±ΠΎΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° эфир β†’ @shortcut_py_bot

Π Π΅ΠΊΠ»Π°ΠΌΠ°.
О Ρ€Π΅ΠΊΠ»Π°ΠΌΠΎΠ΄Π°Ρ‚Π΅Π»Π΅.
🐍 Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ внСшниС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· Python

Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ os.system() ΠΈΠ»ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ Popen. Достаточно subprocess.run() - ΠΎΠ½ запускаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄.


import subprocess

result = subprocess.run(
["git", "status", "--short"],
capture_output=True,
text=True,
check=True,
timeout=10,
)

print(result.stdout)


Π§Ρ‚ΠΎ здСсь происходит:

- capture_output=True сохраняСт stdout ΠΈ stderr
- text=True Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строки вмСсто bytes
- check=True выбрасываСт CalledProcessError, Ссли ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ с ошибкой
- timeout=10 Π½Π΅ позволяСт процСссу Π·Π°Π²ΠΈΡΠ½ΡƒΡ‚ΡŒ навсСгда

Ошибки Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ явно:


import subprocess

try:
result = subprocess.run(
["git", "status", "--short"],
capture_output=True,
text=True,
check=True,
timeout=10,
)
except subprocess.TimeoutExpired:
print("Команда Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡŒ слишком Π΄ΠΎΠ»Π³ΠΎ")
except subprocess.CalledProcessError as error:
print(error.stderr)
else:
print(result.stdout)


ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ списком Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². shell=True Π½ΡƒΠΆΠ΅Π½ Ρ€Π΅Π΄ΠΊΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄, особСнно Ссли строка содСрТит ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

subprocess.run() - простой ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ мост ΠΌΠ΅ΠΆΠ΄Ρƒ Python ΠΈ систСмными ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ, Git, компиляторами, CLI-инструмСнтами ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅:
https://pythonmorsels.com/running-subprocesses-in-python/
Π›Π΅Ρ‚ΠΎ, ИВ-Пикник ΠΈ ΠΌΡƒΠ·Ρ‹ΠΊΠ° извСстных артистов ΡƒΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· нСсколько Π΄Π½Π΅ΠΉ!

8 августа Π² КоломСнском ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ИВ-Пикник.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ β€” выступлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LAB Антона БСляСва, IOWA, Cream Soda, Pompeya, ΠΌΠ°Ρ€Ρ‚ΠΈΠ½Π° ΠΈ Π‘ΠΎΠ²Ρ‹.

А Π΄Π½Π΅ΠΌ β€” Π½Π°ΡƒΡ‡ΠΏΠΎΠΏ-Π»Π΅ΠΊΡ†ΠΈΠΈ, дискуссии ΠΎΠ± ИИ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… языковых модСлях, мастСр-классы ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Ρ‹. ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ знакомства ΠΈ развлСчСния Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚.

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ подробности ΠΌΠΎΠΆΠ½ΠΎ Π½Π° сайтС мСроприятия.

Π’ Π±ΠΈΠ»Π΅Ρ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ +1 β€” ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ·Π²Π°Ρ‚ΡŒ Π±Π»ΠΈΠ·ΠΊΠΈΡ… ΠΈ Π΄Ρ€ΡƒΠ·Π΅ΠΉ.

Π”ΠΎ встрСчи Π² мСстС притяТСния ИВ.
🐍 Free-threaded Python ΡƒΠ±Ρ€Π°Π» GIL, Π½ΠΎ NumPy всё Ρ€Π°Π²Π½ΠΎ упирался Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

Казалось Π±Ρ‹, Python 3.13+ Π±Π΅Π· GIL Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ нСскольким ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ числСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Но Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ufunc Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ структуры NumPy, счётчики ссылок ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти.

Π’ NumPy 2.5 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ устранили нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΡƒΠ·ΠΊΠΈΡ… мСст:

- Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ диспСтчСризации ufunc Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π½Π° lock-free concurrent hash map;
- Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΡ… слуТСбных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² сдСлали «бСссмСртными», снизив ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ подсчётС ссылок;
- Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠ΅Ρ€Π΅Π²Π΅Π»ΠΈ Π½Π° PyMem_RawMalloc ΠΈ PyMem_RawFree.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ нСзависимыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ:


from concurrent.futures import ThreadPoolExecutor

import numpy as np

arrays = [
np.random.rand(5_000_000)
for _ in range(8)
]

with ThreadPoolExecutor(max_workers=8) as pool:
results = list(pool.map(np.sin, arrays))


Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ multiprocessing - массивы Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами.

ΠŸΠΎΡ‚ΠΎΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ адрСсном пространствС, поэтому ΠΌΠΎΠ³ΡƒΡ‚ эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ многоядСрный CPU ΠΈ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Но Π΅ΡΡ‚ΡŒ ваТная ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°:

free-threaded Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ автоматичСски thread-safe.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ndarray ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² всё Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π³ΠΎΠ½ΠΊΠ°ΠΌ, ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ падСнию ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

БСзопаснСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

- ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ массив для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ worker;
- ΠΎΠ±Ρ‰ΠΈΠΉ массив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния;
- ΡΠ²Π½ΡƒΡŽ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ записи.

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ GIL оказалось нСдостаточно. Π§Ρ‚ΠΎΠ±Ρ‹ Python Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π»ΡΡ ΠΏΠΎ ядрам, ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ внутрСнности NumPy.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅:
https://labs.quansight.org/blog/scaling-numpy-on-free-threaded-python