Python Hints
8.62K subscribers
170 photos
11 videos
9 files
141 links
Python tips and tricks
The Good, Bad and the Ugly

توی این کانال فقط قرار هست در مورد core python صحبت کنیم.

این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار)

Admin: @Abbasi_ai
Download Telegram
ی سری آدما هم توی لینکدین هستند که برای تبلیغ خودشون، دیده شدن یا تبلیغ کانال و پروفایل :

میان ی موضوع، مطلب در مورد یک آدم بزرگ می‌نویسند
بعد شروع می‌کنند یک تکنولوژی، گروهی از آدم‌ها یا ... رو کوبیدن

در نهایت هم به خودشون رفرنس می‌دهند.

مثلاً طرف در مورد دنیس ریچی می‌نویسه، بعد میگه دنیس ریچی بزرگ هیچوقت در مورد پایتون و جاوا اسکریپت نظر نداد

تازه کل پایتون روی C نوشته شده، یا مثلاً
Engine
مورد نیاز روی node , ... با C نوشته شده و ...
پس تویی که هیچوقت به سورس کد این‌ها اضافه نکردی، چرا این ۲ تا رو مقایسه می‌کنی

ببخشید ببخشید، ولی این حرف اوج حماقت هست بنظرم
برای من زمانی که اول راه بودم همین مقایسه‌ها باعث شد مسیری که بیشتر به روحیات من نزدیک هست رو پیدا کنم

برای من به مراتب پایتون دوست داشتنی تر از C هست (زمانی توسعه دهنده C++ بودم)
برای من به مراتب لینوکس مهمتر و بهتر بوده تا ویندوز و ...

خواستم بگم این مطالب رو لایک نکند، به اشتراک نگذارید یا اگر گذاشتید قبلش کانکشن رو با من قطع کنید.

یادتون نره، قبل از هر پروژه وقتی
System design
رو انجام میدهیم، می‌شینیم و استک ابزارهای مورد نیاز رو باهم بررسی می‌کنیم و تصمیم میگیرم که چه ابزاری رو استفاده کنیم (حالا اینکه بعضی‌ها رو توی این جلسه راه نمی‌دهند داستانش جداس 😉)

پس مقایسه جزوی از زندگی یک برنامه‌نویس هست.

@PyHints
👍48👎71🔥1
Python Hints
ی سری آدما هم توی لینکدین هستند که برای تبلیغ خودشون، دیده شدن یا تبلیغ کانال و پروفایل : میان ی موضوع، مطلب در مورد یک آدم بزرگ می‌نویسند بعد شروع می‌کنند یک تکنولوژی، گروهی از آدم‌ها یا ... رو کوبیدن در نهایت هم به خودشون رفرنس می‌دهند. مثلاً طرف در…
ی زمانی بود پروژه پرداخت یارانه‌ها رو یک شرکت ایرانی میزد

بعد تراکنش و ... رو روی
MongoDB
نگه می‌داشتن، تو مصاحبه یکی از دوستان هم بهش گفته بودن
مگه شما نمیدونی که
mongodb
ورژن ۱۰
mysql
هست ؟

اون دوستانی که dislike کردن فک کنم مشاور این پروژه بودند 🤣

کاملاً واقعی
😁59👎115😐3👍21
Python Hints
ی زمانی بود پروژه پرداخت یارانه‌ها رو یک شرکت ایرانی میزد بعد تراکنش و ... رو روی MongoDB نگه می‌داشتن، تو مصاحبه یکی از دوستان هم بهش گفته بودن مگه شما نمیدونی که mongodb ورژن ۱۰ mysql هست ؟ اون دوستانی که dislike کردن فک کنم مشاور این پروژه بودند…
آقا این جمله قصار :

" مانگو دی‌بی ورژن ۱۰ مای اسکیوئل هست "

رو من نگفتم، نقل قول کردم از مصاحبه یکی از دوستان با مدیران اون شرکت به دوست عزیز ما این رو گفته بودند.

ی ۱۰ دقیقه اومدیم تلگرام هی باید توضیح بدیم که ببین من توی اون پست نوشتم

گفته بودن، نه اینکه بنویسم گفته بودم

من ۴ سال هست؛ دیتابیس دیزاین روی
MongoDB
انجام میدم. قطعاً انقدر سواد دارم که راجبش نظر میدم 🤦

تورو قرآن درست بخونید 🤦

#موقت
😁39👍54🤷‍♂3👎3🤷3🫡2🕊1
هفته‌ای که گذشت (۷ روز من روز تعطیل ندارم فقط ساعت‌های کاریم کمتر می‌شه)

در مجموع برای جاهایی که کار می‌کنم : ۱۱۰ ساعت کاری پر شده تقریباً روزی ۱۵-۱۶ ساعت

همگی هم دنبال تمام وقت شدن قرارداد من هستند، هیچوقت ناشکری نمی‌کنم چون این انتخاب خودم بودم و دوست داشتم زندگی رو اینطوری تجربه کنم

اطراف من دانشجو و محقق و بورس گرفته و ... بسیار زیاد هست
وقتی می‌بینم که برای پیاده‌سازی یک تمرین ساده، یک پروژه یا یک مقاله دنبال یکی میگردن که کار رو براشون انجام بده
یا اینکه این موارد رو خیلی قشنگ توضیح میدهند ولی حتی اگه تمام فرمول‌های ریاضی جلوشون باشه نمی‌تونند پیاده سازی کنند
یا بخاطر خوندن ۱۰ تا مقاله توی موضوعی که دوست دارند، همش غر میزنند که چقدر زندگی سخت هست

یک نگاهی به مدل کاری خودم و بعضی از دوستانم می‌اندازم، و میگم نکنه ما برداشتمون اشتباه بوده نکنه ما داریم سخت میگیریم ؟

اگر شماهم ازین دسته هستید و با این هدف که زندگی و درآمد خوبی داشته باشید دارید درس می‌خونید، بهتون توصیه می‌کنم ازین دسته بندی فاصله بگیرید :

توی کار واقعی :
من هم مقاله باید بخونم (خیلی خیلی بیشتر و توی موضوعی که شاید علاقه ندارم ولی بیزینس بهم گفته لازم داره)
هم باید پیاده‌سازی انجام بدم
هم خیلی وقتا پیش میاد باید سورس کد یک پروژه دیگه رو تغییر بدم تا خروجی مورد نیاز مارو بهمون بده
هم باید با تیم‌های دیگه تعامل داشته باشم و ....


عادت کنید، درس خواندن سخت نیست (هرچند اگر با این اوضاع ایران و شرایط هزینه‌ای دارید توی ایران درس می‌خونید خیلی کار بزرگی دارید می‌کنید)
ولی می‌خوام بگم کار با دستمزد خوب ازین هم سخت‌تر می‌تونه بشه

هیچوقت فکر نمی‌کردم این حرف رو بزنم :
ولی واقعاً دلم می‌خواد با ی استاد هماهنگ کنم، ی بورسیه بگیرم و بشینم درس بخونم باز
نه اینکه نیاز داشته باشم به مدرک و ... اش
نه، فقط احساس می‌کنم شدیداً به استراحت نیاز دارم.

پ.ن :
این رو برای این هم گفتم که دیگه درخواست حل تمرین یا معرفی کسی برای حل تمرین‌‌هاتون رو برای من نفرستید 🌹
👍4220❤‍🔥1😢1👌1🐳1👀1🆒1
وقتی بالاخره صفحات وب و vscode , ...
پروژه‌هات رو می‌بندی چون همه تسک‌هارو قبل اسپرینت انجام دادی ...
مصرف رم از ۱۰۰ گیگ اومد روی ۲۳ گیگ
باقیش رو تمیز کنیم ببینیم به ۵ گیگ میرسه
کش ۴۹ گیگ آخه 😢

پ.ن : سعی می‌کنم وقتم که آزاد شد پست‌های مهم رو ادامه بدم حتما 🌹

پ.ن ۲ : تا ۳.۵ گیگ اومد
🌚194👍3😁2😎1
خیلی وقتا بهم میگن، اشتباه می‌کنی و وقتت رو الکی تلف می‌کنی که بجای خوندن فقط آموزش و یادگیری میری سورس کد رو میخونی ؛

هیچ‌وقت این موضوع رو جواب نمیدم و همیشه می‌گم حق با شماست، ولی به این آدما باید گفت :

خیلی باید رشد کنی، تا بفهمی چرا حتماً باید بعضی سورس کدها رو خوند.

حداقلش : کمک واضح به
System design, Optimization
هست.

مثلاً می‌دونستید
Coroutine
توی پایتون 3.5 کلا ۳۵۰ خط کد بوده، و پیاده سازیش با
generator
های پایتون بود ؟
برای همین می‌تونستیم خیلی راحت بهش فیچر اضافه کنیم (کاری که توی پروژه انجام دادیم)

تصویر مربوط به سورس کد coroutine روی python3.5
👍305💋21
Python Hints
خیلی وقتا بهم میگن، اشتباه می‌کنی و وقتت رو الکی تلف می‌کنی که بجای خوندن فقط آموزش و یادگیری میری سورس کد رو میخونی ؛ هیچ‌وقت این موضوع رو جواب نمیدم و همیشه می‌گم حق با شماست، ولی به این آدما باید گفت : خیلی باید رشد کنی، تا بفهمی چرا حتماً باید بعضی سورس…
حالا ی بحثی که پیش میاد این هست که چقدر باید سورس کد خوند و تا کجا ؟

اینکه هر پکیجی که دستمون میاد رو بریم سورس کدش رو بخونیم که عملاً واقعی نیست، کاش سرعت خوندن انقدر زیاد بود یا زمان زیادی داشتیم که خب اینطوری نیست و همین شاید زندگی رو ارزشمند کرده 🤔

ولی شخصاً مطالب و فیچرهای خیلی مهم پایتون رو حتماً سورس کداش رو میخونم (قرار نیست خط به خط دیباگ کنید)
باقی پکیج‌ها هم فقط مواردی که می‌دونم ازون روزی که یاد میگیرم به بعد قرار هست توی تموم پروژه‌هام ازش استفاده کنم و پول در بیارم

پکیج‌هایی که قراره فقط ۶ ماه باهاش کار کنم یا در حد ۱ پروژه هست رو هیچوقت اینکارو نمی‌کنم مگر اینکه مجبور بشم یا شرکت بخواد داخلش تغییرات ایجاد کنه.

این مرز بندی بسیار بسیار مهم هست که درست و بهینه باشه
28👍18❤‍🔥21👌1
Python Hints
#Quick من این اخطار‌ هارو همیشه زودتر به دوستان نزدیکم میگم گفتم ازین به بعد بعضی‌هاش رو اینجا هم بگم: اولین : asyncio رو هرچه زودتر یاد بگیرید، پترن‌ها و مفاهیم برنامه‌نویسی Async, Parallel, Concurent قبلتر تأکید زیادی روش نداشتم، اما دیر نیست (توی…
بعد از این پست، چندتا دوره آموزش
Async programming
برام فرستادید، بعضی موارد حتی از طرف افراد معروفی هست که متأسفانه وقتی ۱-۲ مورد رو نگاه کردم متوجه شدم کلاه‌برداری‌ هست

من بهترین منبع رو توی کانال گذاشتم : کتابی که بالاتر هست.
اما برای اینکه متوجه بشید دوره درست هست یا خیر؛

به زبان ساده :

ما بطور کلی ۲ نوع مشکل می‌تونیم داشته باشیم که کدهامون سرعت اجرا کندی داشته باشند :
۱- CPU bound
۲- I/O bound

مورد اول : وقتایی هست که شما پردازش خیلی زیادی داری، کد معطل خوندن دیتا از هارد، یاد دانلود دیتا و ... نیست و فقط و فقط خود پردازش کردن داده‌ها هست که داره زمان زیادی میگیره، به فرض اینکه کد بخوبی زده شده و تا حد خوبی اپتیمایز شده برای این نوع مسائل باید برید سراغ کتابخانه:
multiprocessing

مورد دوم : غیر از بچه‌های
Data science, data engineering
اکثر مواقع شما مشکلی که دارید روی این بخش هست، همونطور که می‌دونید پردازش CPU بسیار سریعتر از بخش‌های
I/O : Input / Output

هست، یعنی شما توی کسری از ثانیه محاسبات رو روی ۱ هسته از CPU های لپ‌تاپ یا سیستمتون انجام میدید ولی خوندن دیتا از هارد، رم یا حتی وقتی دارید
Crawler
می‌نویسید دانلود اون صفحه توسط پکیج requests هست که خیلی زمانبر هست نه پیدا کردن چندتا تگ توی html اون صفحه؛ هرچیزی غیر از CPU بمحض درگیر شدن کدهارو
I/O bound
می‌کنه، ولی خب به نسبت پردازش بهش نگاه می‌کنیم اگر از پردازش وقت بیشتری بگیره کدهای شما
I/O Blocking
هستند اگر از پردازش وقت کمتری بگیره کدهای شما
CPU Blocking

برای همین خیلی وقتا
Multiprocessing, Multithreading
توی پایتون، بهبود سرعتی که نمی‌ده هیچ اجرا رو کندتر هم می‌کنه (این چیزی هست که زیاد می‌شنوم و می‌فهمم طرفم حتی مفاهیم ساده علوم کامپیوتر رو هم نمی‌دونه و خودش رو برنامه‌نویس می‌دونه)

برای تسک‌های I/O blocking باید از
asyncio
استفاده کنید، اما صرف نوشتن
async, await

هیچ اتفاقی نمیوفته (اینو میلیاردها بار توی کدهای fastApi می‌بینید) await اصلا از خود کلمه‌اش مشخص هست (من همیشه اینطوری درس میدادم)
A wait
ی ذره صبر کنیم تا جواب این خط کد بیاد بعد ادامه میدیم، و همینجوری کیلویی استفاده کردنش هیچ کمکی نمی‌کنه

از طرف دیگه کتابخونه‌ای که توی پروژه
Async
استفاده میشه هم مهم هست، مثلاً برای ارسال درخواست روی web دیگه نمی‌تونید از requests استفاده کنید باید اون کتابخونه هم async رو پشتیبانی کنه مثلاً بعنوان جایگزین

HttpX, aiohttp



با این مطلب می‌تونید خیلی وقتا متوجه بشید ی دوره آموزش
asyncio
کلاهبرداری هست یا واقعی (چون خیلی از آدمهای بسیار معروف توی دنیای پایتون رو دیدم، که asyncio رو اشتباه تدریس می‌کنند.)

ولی بازم منبع اصلی کتابی هست که آخر پیام‌های پین شده گذاشتم برای
Async
👍54👏6211👌1
#موقت

کامنت‌های پست‌هارو فراموش نکنید
دوستان به نکات جذاب و ریزی اشاره می‌کنند 👌
23👍63🤪3
اینو همه‌ی سرمایه‌گذارهای پروژه و کد توی ایران حتما باید ببینند :
برای دولوپر‌های عزیز هم قبل از اینکه جوگیر بشید و بگید میخوام شرکت بزنم این رو ببینید (این بررسی فقط از جنبه‌های توسعه نرم‌افزار هست باقیش هیج)

https://www.youtube.com/watch?v=Dl-BdxNRUqs
👍22👎2
این جمله خیلی خیلی درسته
و هرکسی هم توی این جایگاه نیست که بتونه درست قضاوت کنه راجب نیاز به یک تکنولوژی

صرف اینکه گوگل؛ فیسبوک و … دارند ازش استفاده می کنند دلیل خوبی نیست که شما هم ازش استفاده کنید و اگر دلیلتون برای انتخاب یک تکنولوژی فقط همین هست احتمال بسیار زیاد توی این مسیر اشتباهات زیادی داشتید.
👏27👍9👎2🤔2
توی یکی از ارائه‌های این هفته به کارآموزها گفتم بهونه نیارید، منتور خوب نداشتم، پروژه خوب دستم نیوفتاد و ... بهونه هست
حتی زمان ما هم به نوعی بهونه بود، بودنش خوب بود ولی وقتی نبود هم می‌شد پیشرفت کرد فقط کند می‌شدیم من کلاً نداشتم منتور و ...
Self taught
کامل هستم (خطا هم داشتم ولی خب)
الان که بهونه ۱۰۰٪ هست، با توجه به وجود
chatGpt, ...

چراکه bing داره GPT 4 رو به رایگان بهتون دسترسی می‌ده :

https://t.iss.one/pytens/1278

چطوری می‌شه ازین ابزار برای یادگیری و تقویت برنامه‌نویسی استفاده کرد ؟!

پست بعدی ...
👍133👎1
نحوه استفاده از هوش مصنوعی؛ چندتا از بچه ها بعد از ارائه پیام دادند که یک آموزش از اینکه چطوری با
AI
الگوریتم و … رو یاد بگیریم بذارید

گفتم این نمونه رو بذارم.

برعکس این هم هست؛ زمانی که شما یک الگوریتم رو میشناسید ولی مثال برنامه نویسی ازش ندیدید؛
کافیه بگید براتون مثال بزنه یا چندتا چالش ازون مبحث براتون مطرح کنه تا کد بزنید.

خلاصه که بهونه نیارید؛ پیشنهاد ویژه میکنم از نسخه bing استفاده کنید حتما چون هم بهتون پیشنهاد و نمونه
prompt
میده و هم رفرنس نمایش میده که مطمئن تر از خود
chatGPT
حتما هم رو حالت
more precise
بذاریدش


@PyHints
20👍13
#موقت #یادآوری 😁

حتماً باید تا آخر وقت امروز چند پست درمورد :
Profiling
بنویسم :

timeit, cProfile, line_profiler, memory_profiler
و خب پکیج مورد علاقه خودم
Scalene
👍26🤩122🆒1
profiling
یکی از مهمترین و جذاب‌ترین مباحث هست که یک توسعه دهنده باید باهاش آشنا باشه (توی رزومه هم خیلی مهمه اونجایی که شما می‌گید من ۲۰٪ کدهای قبلی رو اپتیمایز کردم؛ شاید تو خیلی از شرکتهای ایران کیلویی باشه ولی شرکت‌های درست و حسابی باید گزارش profiling رو ارائه بدید)

ساده ترین قدم توی پروفایلینگ استفاده از پکیج timeit هست؛ توی دیتاساینس هم یکی از BuiltIn Magic های بسیار مهم IPython هست.

کجا بدرد می‌خوره؟
وقتی شما بین استفاده از دوتا روش مشکل دارید (ولی این ۲ تا کد معمولا بین ۱-۱۰ خط هست)
۲ تا پارامتر مهم داره؛
۱- کدی هست که میخواید سرعت اجراش رو تست کنید.
۲- تعداد تکرار یا اجرای اون کد هست (مثال بالا ۱۰۰) و چون زمانی که بر میگردونه با تعداد تکرار هست مقدارش رو تقسیم بر تعداد تکرار می‌کنیم تا میانگین زمان اجرای ۱ بار اون کد بدست بیاد (بر حسب ثانیه)

نکته :هیچوقت تعداد تکرار رو ۱ نذارید تا عدد دقیق‌تری بدست بیارید.

@PyHints

خروجی کد بالا بین خط ۲۱ تا ۲۴.
👍421122
Python Hints
profiling یکی از مهمترین و جذاب‌ترین مباحث هست که یک توسعه دهنده باید باهاش آشنا باشه (توی رزومه هم خیلی مهمه اونجایی که شما می‌گید من ۲۰٪ کدهای قبلی رو اپتیمایز کردم؛ شاید تو خیلی از شرکتهای ایران کیلویی باشه ولی شرکت‌های درست و حسابی باید گزارش profiling…
یادگرفتیم که اگر برای کد کوچیک تو زمان توسعه کد به شک افتادیم timeit سریعترین و بی‌دردسرترین ابزار هست.
اما دنیا همیشه انقدر قشنگ نیست و خیلی وقتا ما ی دولوپری هستیم که قراره shit code های دیگران رو جم و جور کنید (هرکسی ی اندازه اینکارو می‌کنه) برای اینکار ابزار بهتری وجود داره به اسم
cProfile
همین‌جا بگم که از ماژول profile استفاده نکنید (این ابزار متعلقات پایتونی داره و زمان رو دقیق نمی‌ده) مگر اینکه درحال توسعه یک پروفایلر جدید هستید.

من جزو اون دسته از افرادی هستم که ترجیح میدم cProfile رو داخل کدهام وارد نکنم و بجاش از کامند استفاده کنم تا مجبور نشم اسکریپت‌هام رو تغییر بدم و ... (اگر شما import cProfile رو میخواید داکیومنتش رو بخونید؛ خیلی ساده‌اس نگران نباشید)

کجا استفاده کنیم ؟
وقتی می‌خواید ببینید توی اسکریپت کلا چه خبره یا شک دارید آیا همین اسکریپت هست که تبدیل به
bottleneck
شده یا نه (همینجا اضافه کنم برای نمایش گرافیکی هم ابزاری داریم به اسم
snakeviz
گه من ازش می‌گذرم چون scalene رو میخوام توضیح بدم)

@PyHints
👍41322🆒2
قبل از اینکه خروجی cProfile رو تفسیر کنم می‌خوام مهمترین نکته توی زندگیتون موقع استفاده از ابزارهای profiling رو بگم.

همیشه و تحت همه شرایط؛ خروجی Profiling رو ذخیره کنید اونم ۲ بار :
۱- قبل از اینکه کدی رو تغییر بدید (همیشه هم به اسمی ذخیره کنید که یادتون بمونه + تاریخ)
۲- بعد از اینکه تغییرات رو اعمال کردید (اسم تغییرات + تاریخ یا git commit)

شاید شما ندونید برای چی ذخیره می‌کنیم ولی ی روزی نجاتتون میده.

برای گرفتن خروجی بالا توی ترمینال این دستور رو اجرا می‌کنیم با توجه به این نکته که اسکریپت مثال (توی عکس قبلی رو به اسم example.py ذخیره کردیم)
python -m cProfile -s cumulative example.py
و درصورتی که بخوایم خروجی رو ذخیره کنیم که برای آنالیزش از
snakeviz, pstats
استفاده بشه و مهمتر از همه داکیومنتش کرده باشیم می‌تونیم از دستور
python -m cProfile -s cumulative -o compare_bubble_vs_builtin_sort_$(date +'%Y_%m_%dT%H_%M_%S').prof example.py

استفاده کنیم؛ حتما پسوند رو .prof بذارید که راحت شناسایی بشه.
26👍19👌32
Python Hints
قبل از اینکه خروجی cProfile رو تفسیر کنم می‌خوام مهمترین نکته توی زندگیتون موقع استفاده از ابزارهای profiling رو بگم. همیشه و تحت همه شرایط؛ خروجی Profiling رو ذخیره کنید اونم ۲ بار : ۱- قبل از اینکه کدی رو تغییر بدید (همیشه هم به اسمی ذخیره کنید که یادتون…
توی دستور بالا :
-m:
برای استفاده از یک ماژول خاص استفاده می‌شه
-s:
ترتیب نمایش هست که گفتیم بر اساس cumulative time باشه همیشه هم همین رو استفاده خواهید کرد
-o:
برای اینکه خروجی رو توی یک فایل بریزه و توی ترمینال نمایش نده (اول در تاریخ ثبت می‌کنیم بعد ی بار هم بدون این option برای راحتی خودمون اجرا می‌کنیم)

تفسیر خروجیش هم خیلی ساده‌تر از اون چیزی هست که فکر می‌کنید فقط چندتا نکته داره :
ncalls:
تعداد فراخوانی اون خط از کد (ستون آخر کمی جلوتر توضیح میدم دقیق)
وقتی دوتا عدد هست مثل خط اول خروجی توی عکس قبلی
3/1:
عدد کوچیکتر تعداد فراخوانی غیر بازگشتی یا primitive هست و عدد بزرگتر تعداد کل فراخوانی به هر شکلی که بوده (بازگشتی و غیر بازگشتی و ...) یعنی بصورت کلی اون builtin method توی مثال قبل ۳ بار فراخوانی شده.

tottime:
مجموع زمان مورد نیاز جهت اجرای اون تایع؛ به غیر از زمان اجرای توابعی که داخل این تابع فراخوانی شده‌اند.

percall:
زمان اجرای مورد نیاز برای هربار اجرای اون خط یا اون تابع معمولا حدودی برابر هست با :
tottime / ncalls

cumtime:
مهمترین ستون همینه و اون مرتب سازی که توی دستور انجام دادیم (منظورم s cumulative- هست) بر اساس همین ستون بود.
مجموع زمان مورد نیاز از لحظه فراخونی اون خط یا تابع تا خروج از اون خط یا تابع + زمان مورد نیاز برای اجرای توایعی که داخل این تابع یا خط فراخوانی شدند + زمان اجرا بصورت recursive , ... خلاصه همه چیز اینجاس و از همه ستون‌ها هم دقیق‌تر هست

filename:lineno(function)
اینم که بسیار واضح هست از سمت چپ به راست :
اسم اسکریپت : شماره خطی که اون کد اجرا شده (اسم تابع)
اسم تابع برای شرایطی مهم هست که داخل تابع اصلی توابع دیگری هم فراخوانی بشه

توی خروجی بالا مواردی مثل builtin.exec (از توابع مورد علاقه من هست اصن ی وضعی) و برخی موارد دیگر برای
import random
هست
@PyHints

همینجا بگم که تصویر قبلی خروجی کامل cProfile نیست و بنده این خروجی رو بریدم تا خواناتر باشه
👍401432👎2
lineprofiler, memory profiler, scalene (all in one gpu include)

بماند برای روزهای بعدی (روی هرکدوم از موارد که دوست داشتید reaction بزنید ممنون)
👍501832🤪2