Random shi- tutorials
208 subscribers
234 photos
28 videos
12 files
556 links
محتوای مفید برنامه نویسی و لینوکسی از سراسر دنیا ✍️
جوین شدن شما موجب شادی روح و روان ما میگردد😗
Download Telegram
درصورتی که دارید از ویرچوال انوایرومنت پایتون 3.12 به بعد استفاده میکنید، برای استفاده از pip باید این دستورات رو اجرا کنید تا pip روی محیط مجازی تون نصب بشه :
python -m ensurepip --upgrade
python -m pip install --upgrade setuptools
pip install --upgrade setuptools

منبع
#python
#Arj
Forwarded from Persian Store
10کتاب ارزشمند اما رایگان پایتون
1. Think Python

❯ v2 (PDF)

❯ v3 (HTML)

2. Exploring Python Basics

Publisher: Manning

https://www.manning.com/books/exploring-python-basics

3. Clean Code in Python
Publisher: Packt
https://packtpub.com/free-ebook/clean-code-in-python/9781788835831

4. Automate the Boring Stuff with Python
Publisher: No Starch Press

https://automatetheboringstuff.com

5. The Hitchhiker's Guide to Python
Publisher: O'Reilly

https://docs.python-guide.org/

6. Explore Data with Python
Publisher: Manning

https://www.manning.com/books/exploring-data-with-python

7. Learn More Python 3 The Hard Way
https://learncodethehardway.org/more-python-book/

8. The Big Book of Small Python Projects
https://inventwithpython.com/bigbookpython/

9. The Recursive Book of Recursion
https://inventwithpython.com/recursion/

10. Python beyond the Basics
https://inventwithpython.com/beyond/


#Python #DataScience
#MachineLearning #AI



https://persianstore.org

Contact Us : @Prsiaman
Channel : @prsian_store
Forwarded from Shayan GeeDook🐧
⚡️ #! یا Shebang چیه؟ چرا انقدر مهمه؟
تا حالا به اول بعضی از فایل‌های اسکریپت نگاه کردی و دیدی این دوتا کاراکتر مرموز #! اون بالا نشستن؟
مثل این:

#!/bin/bash


خب، این همون Shebang معروفه.
ترکیبی از # و ! که کنار هم تبدیل می‌شن به یه خط جادویی تو دنیای یونیکس و لینوکس!

👑 داستان از کجا شروع شد؟

ماجرا برمی‌گرده به دهه ۸۰ میلادی، وقتی که سیستم‌عامل‌های شبه‌یونیکس داشتن رشد می‌کردن و توسعه‌دهنده‌ها نیاز داشتن بدونن یه اسکریپت با چه برنامه‌ای باید اجرا بشه.

توی سیستم‌عامل‌های یونیکسی، وقتی شما یه فایل رو قابل اجرا (chmod +x) می‌کنی و سعی می‌کنی اجراش کنی، سیستم باید بفهمه این فایل توسط چه تفسیری (interpreter) اجرا بشه. Bash؟ Python؟ Perl؟ Node؟


اینجاست که shebang وارد می‌شه.
این خط اول فایل، به سیستم‌عامل می‌گه: «اگه خواستی این فایل رو اجرا کنی، با این برنامه اجراش کن!»

مثال:

#!/usr/bin/python3
print("Hello, world!")

این یعنی اجراش با مفسر پایتون نسخه ۳.

🧠 چرا بهش می‌گن Shebang؟
واژه‌ی "Shebang" ترکیبیه از:

sh → اشاره به sh که همون Unix shell اولیه بوده

bang → اسمی قدیمی برای کاراکتر !

بنابراین #! می‌شه: "sh-bang"

(البته بعضی جاها بهش hashbang یا pound-bang هم می‌گن)


🎯 چرا انقدر مهمه؟
قابل حمل بودن: یه اسکریپت با روی هر سیستم یونیکسی کار می‌کنه، بدون اینکه بدونی کدوم شله

🛠 کنترل بیشتر: می‌تونی دقیقاً مشخص کنی با کدوم نسخه از مفسر اجرا بشه (مثلاً #!/usr/bin/env python3)

💻 استاندارد بودن: خیلی از ابزارها و سیستم‌ها به خط اول فایل حساسن. اگه درست نباشه، ممکنه اسکریپت اجرا نشه


💡 کاربرد جالب env توی shebang

#!/usr/bin/env python3

اینجوری سیستم خودش مسیر Python 3 رو از متغیرهای محیطی پیدا می‌کنه. برای پورتابل بودن خیلی بهتر از مسیرهای مستقیمه.

🧩 چرا هنوز ویکی‌پدیای فارسیش نیست؟!
با اینکه این مفهوم برای لینوکسی‌ها و برنامه‌نویس‌ها بسیار مهمه، توی ویکی‌پدیای فارسی هنوز صفحه‌ای به اسم Shebang یا #! وجود نداره!
وقتشه که یکی اینو به فارسی بنویسه — شاید تو باشی!

🏷 هشتگ‌ها برای پست:
#Shebang #Linux #Unix #اسکریپت #Bash #Python #DevTips #Geedook #OpenSource


🔖 منابع برای مطالعه بیشتر:

github

Wikipedia (EN) - Shebang (Unix)

stackoverflow

Linux Handbook - What is Shebang


Shayan-GeeDook 🐧
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Ninja Learn | نینجا لرن (Denver)
خب خب خب، ‏Background Task ها توی FastAPI🚀
گاهی اوقات نیاز داریم که یه کاری بعد از ارسال پاسخ به کاربر انجام بشه. مثل ارسال ایمیل خوشامد گویی، ثبت لاگ یا آمار توی دیتابیس، پردازش فایل آپلود شده و .... توی این شرایط میتونیم از Background Task ها استفاده کنیم، اینجوری میتونیم بدون معطل کردن کاربر اون کارهارو جداگانه انجام بدیم.

استفاده از Background Task ها🛠
خب اول باید کلاس BackgroundTasks رو ایمپورت کنیم و یه پارامتر از همین نوع برای فانکشن route بنویسیم.
from fastapi import BackgroundTasks, FastAPI

app = FastAPI()


def write_notification(email: str, message=""):
with open("log.txt", mode="w") as email_file:
content = f"notification for {email}: {message}"
email_file.write(content)


@app.post("/send-notification/{email}")
async def send_notification(email: str, background_tasks: BackgroundTasks):
background_tasks.add_task(write_notification, email, message="some notification")
return {"message": "Notification sent in the background"}

حالا FastAPI میاد یه آبجکت با نوع BackgroundTasks برامون ایجاد میکنه و به اون پارامتر پاس میده.
بعد از اینکه فانکشن تسکمون رو ایجاد کردیم میتونیم با استفاده از متود ()add_task از همون پارامتر اون فانکشن رو به صف اجرا اضافه کنیم. همچنین میتونیم آرگومان های مورد نیازمون رو هم با استفاده از همین متود به تسکمون پاس بدیم.

‏Background Tasks و Dependency injection💉
‏Background Tasks به خوبی با سیستم تزریق وابستگی FastAPI سازگاره. میتونیم توی سطح های مختلف برنامه(فانکشن route، یه وابستگی و...) از Background Task استفاده کنیم.
from typing import Annotated

from fastapi import BackgroundTasks, Depends, FastAPI

app = FastAPI()


def write_log(message: str):
with open("log.txt", mode="a") as log:
log.write(message)


def get_query(background_tasks: BackgroundTasks, q: str | None = None):
if q:
message = f"found query: {q}\n"
background_tasks.add_task(write_log, message)
return q


@app.post("/send-notification/{email}")
async def send_notification(
email: str, background_tasks: BackgroundTasks, q: Annotated[str, Depends(get_query)]
):
message = f"message to {email}\n"
background_tasks.add_task(write_log, message)
return {"message": "Message sent"}

توی این مثال بعد از اینکه پاسخ به کلاینت ارسال شد، یه تسک میاد ایمیل کاربر رو توی فایل log.txt مینویسه. اگه یه کوئری پارامتر هم به API ارسال بشه یه تسک دیگه اون رو هم توی فایل مینویسه.

نکته مهم⚠️
این ابزار فقط برای کارهای سبک وسریع مناسبه. مثل همین لاگ نوشتن، ارسال ایمیل یا پردازش های خیلی کوچیک و سبک. برای کارهای سنگین تر مثل پردازش تصویر بهتره که از سیستم هایی مثل Celery استفاده بشه.

جمع بندی✍️
‏Background Task یه ابزار ساده ولی کاربردیه. میتونه توی پروژه هایی که تسک های سنگینی ندارن از Celery بی نیازتون کنه و کارهارو بعد از پاسخ دهی به صورت غیرهمزمان انجام بده.

#️⃣ #fastapi #python #backend


🥷🏻 CHANNEL | GROUP
Forwarded from TheAliBigdeli Channel
enhancer_bulk.py
4.9 KB
اینم اسکریپتی که گفته بودم برای افزایش کیفیت حجم صدا که می تونین توی یه دایرکتوری input تمام ویدئو ها رو بگذارید و بعد داخل کد تنظیمات دلخواه رو ست و اجراش کنین و منتظر بمونین. به صورت parallel و یا با gpu هم اجرا میشه فقط باید اول ffmpeg رو دانلود و روی سیستمتون قرار بدید و دایرکتوری درست رو بهش برای اجرا بدید.
چندتا عامل رو توی کد در نظر گرفتم COMPRESSOR و EXPANDER و GAINER به همراه یسری تنظیمات بیشتر برای کیفیت و فشرده سازی که باعث میشه خروجی مناسبی رو بتونین بگیرید

#python
#code
Forwarded from TheAliBigdeli Channel
موضوع GIL در پایتون یعنی چی؟

پایتون یه مکانیزمی داره به اسم GIL (Global Interpreter Lock) که باعث می‌شه در هر لحظه فقط یه بخش از کد پایتونی روی CPU اجرا بشه. یعنی حتی اگه چند کار هم‌زمان تعریف کرده باشی، مفسر پایتون فقط یکی‌شون رو در لحظه اجرا می‌کنه.

هدف GIL اینه که از تداخل و خراب شدن داده‌ها جلوگیری کنه، چون حافظه‌ی داخلی پایتون طوری طراحی نشده که چند بخش از برنامه هم‌زمان بتونن روش بنویسن. این قفل باعث می‌شه اجرای برنامه‌ها در حالت عادی ساده‌تر و ایمن‌تر باشه، ولی در عوض جلوی اجرای واقعی هم‌زمان روی چند هسته CPU رو می‌گیره.

با این حال، GIL فقط برای کارهایی که محاسبات سنگین دارن دردسر سازه. در کارهایی مثل خوندن فایل، درخواست شبکه یا هر چیزی که بیشتر وقتش صرف انتظار می‌شه، GIL معمولاً مشکلی ایجاد نمی‌کنه، چون در اون زمان قفل آزاد می‌شه و کار بعدی می‌تونه ادامه پیدا کنه.

اما نکته جدید: در نسخه‌ی ۳٫۱۴ پایتون، حذف (یا به عبارتی «اختیاری کردن») GIL وارد فاز جدیدی شده. در حالت Free-Threaded (یا No-GIL)، پایتون قادر می‌شه بخش‌های محاسباتی را در چند تِرِد واقعی و هم‌زمان اجرا کنه، که در صورت طراحی درست ممکنه عملکرد چند برابر بهتر بشه.

پست زیر می تونه در عمل بهتر بهت نشونش بده:

https://www.linkedin.com/posts/avi-chawla_finally-python-314-lets-you-disable-gil-activity-7383818720332169216-dtH_?utm_source=share&utm_medium=member_desktop&rcm=ACoAACOugCYBHGWYjHpFz9urfiJEDF52-xCSwtE

📢 @thealibigdeli_channel

#python
#news