یکی از مشکلات خیلی بزرگ پایتون در زمینه مالتی تریدینگ وجود چیزی به اسم GIL که اوضاع رو برامون سخت میکنه و تقریبا باعث شده توی multi threading دستمون در مقایسه با زبان های دیگه خیلی باز نباشه . در اتفاقی عجیب اقای sam gross یه white paper ( همون proposal ) منتشر کردن مبنی بر حذف GIL , که اگه براتون جالب میتونین توی لینک زیر بخونین :
https://docs.google.com/document/u/0/d/18CXhDb1ygxg-YXNBJNzfzZsDFosB5e6BfnXLlejd9l0/mobilebasic
و در لینک زیر میتونین نتیجه بنچمارک که گرفته شده رو ببینید :
https://gist.github.com/colesbury/8479ee0246558fa1ab0f49e4c01caeed
یه چیز خیلی عجیب اینکه ۳۹۶ درصد سرعت در ۴ تا thread افزایش پیدا کرده .
https://docs.google.com/document/u/0/d/18CXhDb1ygxg-YXNBJNzfzZsDFosB5e6BfnXLlejd9l0/mobilebasic
و در لینک زیر میتونین نتیجه بنچمارک که گرفته شده رو ببینید :
https://gist.github.com/colesbury/8479ee0246558fa1ab0f49e4c01caeed
یه چیز خیلی عجیب اینکه ۳۹۶ درصد سرعت در ۴ تا thread افزایش پیدا کرده .
یه اشتباهی داشت ، اون قسمت گفته بود async که خوب دوستان اشاره کردن مربوط به multi threading هست ، اصلاح شد.
ممنون از :
@ShahriarShariati
ممنون از :
@ShahriarShariati
✔️ مکانیزم intern در پایتون چیست؟
از آنجایی که مقایسه دو رشته از طریق آدرس مموری(is) بسیار سریع تر
از مقایسه کاراکتر با کارکتر آنها(==) است، پایتون برای بهینه سازی، بعضی از رشته ها را مانند اسامی متغیر ها، توابع و کلاس های موجود در کد و همچنین بعضی رشته های پرکاربرد و کوتاه را intern میکند؛ یعنی تمامی رشته های با یک مقدار برابر به یک خانه مشترک در حافظه اشاره می کنند و بدین ترتیب می توان از is برای مقایسه آنها استفاده کرد. همچنین با استفاده از sys.intern می توان به صورت دستی رشته های دلخواه را intern کرد که زمانی که با داده های حجیم و تکراری در کاربرد هایی مانند NLP سر و کار داریم می تواند باعث بهبود عملکرد شود.
〰️〰️〰️〰️〰️
© @DjangoEx
از آنجایی که مقایسه دو رشته از طریق آدرس مموری(is) بسیار سریع تر
از مقایسه کاراکتر با کارکتر آنها(==) است، پایتون برای بهینه سازی، بعضی از رشته ها را مانند اسامی متغیر ها، توابع و کلاس های موجود در کد و همچنین بعضی رشته های پرکاربرد و کوتاه را intern میکند؛ یعنی تمامی رشته های با یک مقدار برابر به یک خانه مشترک در حافظه اشاره می کنند و بدین ترتیب می توان از is برای مقایسه آنها استفاده کرد. همچنین با استفاده از sys.intern می توان به صورت دستی رشته های دلخواه را intern کرد که زمانی که با داده های حجیم و تکراری در کاربرد هایی مانند NLP سر و کار داریم می تواند باعث بهبود عملکرد شود.
〰️〰️〰️〰️〰️
© @DjangoEx
Django Expert
✔️ مکانیزم intern در پایتون چیست؟ از آنجایی که مقایسه دو رشته از طریق آدرس مموری(is) بسیار سریع تر از مقایسه کاراکتر با کارکتر آنها(==) است، پایتون برای بهینه سازی، بعضی از رشته ها را مانند اسامی متغیر ها، توابع و کلاس های موجود در کد و همچنین بعضی رشته…
✔️ پیرو این نکته خوب که سید عزیز اشاره کرد. دوستان سوال پرسیدن که چرا مقایسه دوم خروجی False داده. ببینید کامپایلر CPython برای بهینگی در مصرف حافظه، وقتی یک رشته جدید (یا برخی دیگر از آبجکتها) تعریف میشه. مقدار اون رو با مقادیر موجود در حافظه مقایسه میکنه و بجای اشغال کردن مجدد حافظه، رفرنسی از دادههای قبلی در memory رو برمیگردونه و اینطوری برنامه رو بهینهتر میکنه.
اما آیا این اتفاق به طور خودکار برای هرنوع رشتهای میوفته؟ خب جواب نه است. این اتفاق فقط برای شئهایی از نوع رشته میوفته که:
1. کمتر از 20 کارکتر باشن و از ادغام چند رشته تشکیل نشده باشن.
2. رشته باید فقط شامل حروف ASCII، اعداد و underscore باشد (در مثال دوم از فاصله استفاده شده و به همین دلیل نتیجه مقایسه False است).
3. به اصطلاح compile-time constant باشن. یعنی چی؟ یعنی فقط رشتههایی که به طور ثابت در طول رانتایم تعریف میشن (مثال اول). اما اگر این رشته توسط یک عملگر دیگه تولید بشه (مثل توابع، متدها و...) عملیات intern به طور خودکار براش اتفاق نمیافتده و اینکار باید دستی صورت بگیره.
برای مطالعه بیشتر به این مقاله مراجعه کنید.
〰️〰️〰️〰️〰️
© @DjangoEx
اما آیا این اتفاق به طور خودکار برای هرنوع رشتهای میوفته؟ خب جواب نه است. این اتفاق فقط برای شئهایی از نوع رشته میوفته که:
1. کمتر از 20 کارکتر باشن و از ادغام چند رشته تشکیل نشده باشن.
2. رشته باید فقط شامل حروف ASCII، اعداد و underscore باشد (در مثال دوم از فاصله استفاده شده و به همین دلیل نتیجه مقایسه False است).
3. به اصطلاح compile-time constant باشن. یعنی چی؟ یعنی فقط رشتههایی که به طور ثابت در طول رانتایم تعریف میشن (مثال اول). اما اگر این رشته توسط یک عملگر دیگه تولید بشه (مثل توابع، متدها و...) عملیات intern به طور خودکار براش اتفاق نمیافتده و اینکار باید دستی صورت بگیره.
برای مطالعه بیشتر به این مقاله مراجعه کنید.
〰️〰️〰️〰️〰️
© @DjangoEx
Forwarded from DLeX: AI Python (Farzad)
موقعیتهای تحصیلی و کاری از این پس در این کانال تلگرامی منتشر میگردد دوستان خودتون را به این کانال دعوت کنید.
👇👇
🔰 https://t.iss.one/DLeX_Apply
👇👇
🔰 https://t.iss.one/DLeX_Apply
با سلام و احترام خدمت همراهان عزیز Django Expert 🌹❤️
عزیزانی که کتاب فارسی آموزش کاربردی جنگو از نشر پندارپارس را تا قبل از تاریخ 15مهر ماه تهیه کرده اند، حتماً تصحیحات زیر را در صفحات اشاره شده لحاظ کنند.
عزیزانی هم که از تاریخ 20 مهر ماه به بعد اين کتاب کاربردی را سفارش داده اند، دیگر نیازی به بررسی و اعمال ندارند. چون تصحیحات زیر در چاپ مجدد کتاب برطرف شده است.
🧲 صفحه 493:
بجای کلمه path باید کلمه re_path نوشته شود. خط درست:
re_path (r'^articles/(?P<artid>[-\w]+)/comments/$', comments_views.CommentList.as_view()),
🧲 صفحه 67و68:
نام متغیرهای date و datetime باید به هر نام دلخواه دیگری تغییر یابند. چون در پایتون، توابع/ماژول های کلیدی (keyword) به نام های date و datetime وجود دارند. خط درست:
#### Example-2:
from datetime import date
from django.utils import timezone
class Store (models.Model):
......
my_date=models.DateField (default=date.today) 👈
my_datetime=models.DateTimeField (default=timezone.now) 👈
🧲 صفحه 44:
خط مربوط به تعریف مسیر /admin/doc باید قبل از مسیر /admin باشد. خط درست:
urlpatterns = [
path ('admin/doc/', include('django.contrib.admindocs.urls')),
path ('admin/', admin.site.urls),
path ('', include('coffe_app.urls')),
]
🧲 صفحه 56 (تصحیح توضیح فیلد DecimalField):
یک فیلد از نوع اعشاری (deciaml) برای ذخیره کردن مقادیر از جنس اعشاری عدد در دیتابیس ایجاد میکند.
مقدار X درحال اشاره به کل عدد (صحیح و اعشار) و مقدار Y درحال اشاره به بخش اعشار عدد است. مثال:
models.DecimalField (max_digits=X, decimal_places=Y)
models.DecimalField (max_digits=3, decimal_places=2)
If you define max_digits to be 3 and decimal_places to be 2, the largest number you can save is 9.99 ==> It has 3 digits and 2 decimal places.
models.DecimalField (max_digits=12, decimal_places=4)
If you define max_digits to be 12 and decimal_places to be 4, the largest number you can save is 99999999.9999 ==> It has 12 digits and 4 decimal places.
🧲 صفحه 57:
در آخرین ردیف جدول این صفحه، بجای models اشتباهاً options نوشته شده است. خط درست:
models.SmallIntegerField()
🧲 صفحه 58:
نوع داده ()CommonSeparatedIntegerField در نسخه 1.9 جنگو حذف شده است و دیگر قابل استفاده نیست.
🧲 صفحه 37 ((به منظور ایجاد/ساخت پروژه جنگویی برای نخستین بار باید از دستور django-admin استفاده گردد)). خط زیر غیر فنی است:
(azimzadeh_env1) ...\azimzadeh_env1> python manage.py startproject coffehouse
خط درست و اصولی میشود:
(azimzadeh_env1) ...\azimzadeh_env1> django-admin startproject coffehouse
🧲 صفحه 38 (توضیح دقیق تر پوشه migrations در انتهای صفحه):
با اجرای دستور "python manage.py makemigrations"، تعدادی فایل پایتونی در پوشه migrations ایجاد میشوند که از آنها برای تبدیل مدلهای جنگو (محتوای فایل models.py) به ساختارهای DDL و DML دیتابیس استفاده میشود. فرآیند تبدیل مدلها به ساختار DDL و DML بهوسیله دستور "python manage.py migrate" انجام میشود.
🧲 صفحه 86 (تصحیح توضیح گزینه/صفت managed):
در خط آخر این بولِت، بجای managed=False اشتباها managed=True نوشته شده است. خط درست می شود:
اگر از قبل جدولی برای مدلتان در دیتابیس طراحی کردهاید و نمیخواهید جنگو مجدداً در تنظیمات جدول شما تغییراتی اعمال کند، بهترین راهکار استفاده از حالت managed=False در کلاس Meta مدل است.
🧲 صفحه 289:
در قالب milani_test.html اشتباها بجای imageAD نوشته شده image :
<img src="{{ adimage.image.url }}" alt=''/>
خط درست می شود:
<img src="{{ adimage.imageAD.url }}" alt=''/>
🧲 صفحه 96:
درون متد/تابع (....)filter در هر سـه کلاس سفارشی مدیرمدل، بجای story_type اشتباها story نوشته شده است.
🧲 صفحه 100:
کلمه های Place و Restaurant جابجا نوشته شدند. خط درست:
گزینه/آرگومان on_delete با مقدار models.CASCADE به جنگو دستور میدهد که اگر رکورد X از مدل Place در دیتابیس حذف شد، رکوردی هم که در مدل Restaurant با رکورد X وابستگی و ارتباط دارد باید از دیتابیس حذف گردد (حذف آبشاری).
🧲 صفحه 389:
در کدهای Option2، بجای obj.state اشتباها self.state نوشته شده است.
خط درست: ()return '{} / {}'.format (obj.city, obj.state).upper
همچنین کلمه uppercase در کدهای Option2 و Option3 باید به upper تغییر نام داده شوند. مثال: تبدیل uppercase_two_fields به upper_two_fields
عزیزانی که کتاب فارسی آموزش کاربردی جنگو از نشر پندارپارس را تا قبل از تاریخ 15مهر ماه تهیه کرده اند، حتماً تصحیحات زیر را در صفحات اشاره شده لحاظ کنند.
عزیزانی هم که از تاریخ 20 مهر ماه به بعد اين کتاب کاربردی را سفارش داده اند، دیگر نیازی به بررسی و اعمال ندارند. چون تصحیحات زیر در چاپ مجدد کتاب برطرف شده است.
🧲 صفحه 493:
بجای کلمه path باید کلمه re_path نوشته شود. خط درست:
re_path (r'^articles/(?P<artid>[-\w]+)/comments/$', comments_views.CommentList.as_view()),
🧲 صفحه 67و68:
نام متغیرهای date و datetime باید به هر نام دلخواه دیگری تغییر یابند. چون در پایتون، توابع/ماژول های کلیدی (keyword) به نام های date و datetime وجود دارند. خط درست:
#### Example-2:
from datetime import date
from django.utils import timezone
class Store (models.Model):
......
my_date=models.DateField (default=date.today) 👈
my_datetime=models.DateTimeField (default=timezone.now) 👈
🧲 صفحه 44:
خط مربوط به تعریف مسیر /admin/doc باید قبل از مسیر /admin باشد. خط درست:
urlpatterns = [
path ('admin/doc/', include('django.contrib.admindocs.urls')),
path ('admin/', admin.site.urls),
path ('', include('coffe_app.urls')),
]
🧲 صفحه 56 (تصحیح توضیح فیلد DecimalField):
یک فیلد از نوع اعشاری (deciaml) برای ذخیره کردن مقادیر از جنس اعشاری عدد در دیتابیس ایجاد میکند.
مقدار X درحال اشاره به کل عدد (صحیح و اعشار) و مقدار Y درحال اشاره به بخش اعشار عدد است. مثال:
models.DecimalField (max_digits=X, decimal_places=Y)
models.DecimalField (max_digits=3, decimal_places=2)
If you define max_digits to be 3 and decimal_places to be 2, the largest number you can save is 9.99 ==> It has 3 digits and 2 decimal places.
models.DecimalField (max_digits=12, decimal_places=4)
If you define max_digits to be 12 and decimal_places to be 4, the largest number you can save is 99999999.9999 ==> It has 12 digits and 4 decimal places.
🧲 صفحه 57:
در آخرین ردیف جدول این صفحه، بجای models اشتباهاً options نوشته شده است. خط درست:
models.SmallIntegerField()
🧲 صفحه 58:
نوع داده ()CommonSeparatedIntegerField در نسخه 1.9 جنگو حذف شده است و دیگر قابل استفاده نیست.
🧲 صفحه 37 ((به منظور ایجاد/ساخت پروژه جنگویی برای نخستین بار باید از دستور django-admin استفاده گردد)). خط زیر غیر فنی است:
(azimzadeh_env1) ...\azimzadeh_env1> python manage.py startproject coffehouse
خط درست و اصولی میشود:
(azimzadeh_env1) ...\azimzadeh_env1> django-admin startproject coffehouse
🧲 صفحه 38 (توضیح دقیق تر پوشه migrations در انتهای صفحه):
با اجرای دستور "python manage.py makemigrations"، تعدادی فایل پایتونی در پوشه migrations ایجاد میشوند که از آنها برای تبدیل مدلهای جنگو (محتوای فایل models.py) به ساختارهای DDL و DML دیتابیس استفاده میشود. فرآیند تبدیل مدلها به ساختار DDL و DML بهوسیله دستور "python manage.py migrate" انجام میشود.
🧲 صفحه 86 (تصحیح توضیح گزینه/صفت managed):
در خط آخر این بولِت، بجای managed=False اشتباها managed=True نوشته شده است. خط درست می شود:
اگر از قبل جدولی برای مدلتان در دیتابیس طراحی کردهاید و نمیخواهید جنگو مجدداً در تنظیمات جدول شما تغییراتی اعمال کند، بهترین راهکار استفاده از حالت managed=False در کلاس Meta مدل است.
🧲 صفحه 289:
در قالب milani_test.html اشتباها بجای imageAD نوشته شده image :
<img src="{{ adimage.image.url }}" alt=''/>
خط درست می شود:
<img src="{{ adimage.imageAD.url }}" alt=''/>
🧲 صفحه 96:
درون متد/تابع (....)filter در هر سـه کلاس سفارشی مدیرمدل، بجای story_type اشتباها story نوشته شده است.
🧲 صفحه 100:
کلمه های Place و Restaurant جابجا نوشته شدند. خط درست:
گزینه/آرگومان on_delete با مقدار models.CASCADE به جنگو دستور میدهد که اگر رکورد X از مدل Place در دیتابیس حذف شد، رکوردی هم که در مدل Restaurant با رکورد X وابستگی و ارتباط دارد باید از دیتابیس حذف گردد (حذف آبشاری).
🧲 صفحه 389:
در کدهای Option2، بجای obj.state اشتباها self.state نوشته شده است.
خط درست: ()return '{} / {}'.format (obj.city, obj.state).upper
همچنین کلمه uppercase در کدهای Option2 و Option3 باید به upper تغییر نام داده شوند. مثال: تبدیل uppercase_two_fields به upper_two_fields
✔️ قسمت دوم پیام ادامه اصلاحات کتاب جنگو
🧲 صفحه 457:
متد ()get_user اشتباها درون متد ()authenticate نوشته شده است.
متد ()get_user خودش یک متد مستقل جنگویی است.
لینک های مرتبط به کتاب فارسی *آموزش کاربردی جنگو*:
➡️https://www.pendarepars.com/book/کتاب-آموزش-کاربردي-جنگو-django-قويترين-فريمورک-توسعه-وب-اپليکيشن-پايتون/
➡️https://www.pendarepars.com/book/pdf/4258
➡️https://www.pendarepars.com/contact/
➡️https://t.iss.one/joinchat/msVarKgCNDMyMDY0
➡️https://t.iss.one/django_persian
باتشکر از جناب آقای مهندس عظیم زاده
Thanks to: @wellcomebackdear
〰️〰️〰️〰️〰️
© @DjangoEx
🧲 صفحه 457:
متد ()get_user اشتباها درون متد ()authenticate نوشته شده است.
متد ()get_user خودش یک متد مستقل جنگویی است.
لینک های مرتبط به کتاب فارسی *آموزش کاربردی جنگو*:
➡️https://www.pendarepars.com/book/کتاب-آموزش-کاربردي-جنگو-django-قويترين-فريمورک-توسعه-وب-اپليکيشن-پايتون/
➡️https://www.pendarepars.com/book/pdf/4258
➡️https://www.pendarepars.com/contact/
➡️https://t.iss.one/joinchat/msVarKgCNDMyMDY0
➡️https://t.iss.one/django_persian
باتشکر از جناب آقای مهندس عظیم زاده
Thanks to: @wellcomebackdear
〰️〰️〰️〰️〰️
© @DjangoEx
Django Expert
✔️ سوال: خروجی کد پایتونیک بالا را به صورت ذهنی بدست آورید. سطح: مقدماتی credit: Ben Kurtovic #fun #python 〰️〰️〰️〰️〰️ © @DjangoEx
Forwarded from DevOps Expert (Mohammad Babazadeh)
#fun_but_hagh
پ ن: خوبیش اینه شلوارک پوشیده پاره نمیشه. بدون شلوارک این کار رو امتحان نکنید.
〰️〰️〰️〰️〰️〰️
© @DjangoEx
پ ن: خوبیش اینه شلوارک پوشیده پاره نمیشه. بدون شلوارک این کار رو امتحان نکنید.
〰️〰️〰️〰️〰️〰️
© @DjangoEx
Forwarded from سیلیسیم (Mehran Tarif)
سیلیسیم
و ممنون از دوستی که میخواد با نت داخلی از یوتیوب دانلود کنه ((((: @siliciumir
مهران همراه همیشگی ما و سید مدرسان این کاناله
به امید ۴۰۰ کا شدنت مرد ❤️😍
به امید ۴۰۰ کا شدنت مرد ❤️😍
دوره مقدمات برنامه نویسی #پایتون رو شروع کردم تو یوتیوب و هفتگی آپدیت میکنم. این دوره هیچ پیش نیازی نداره و از پایه شروع میکنیم تا دیتا ساینتیست بشیم. خوشحال میشم همراه بشید و به درد بخوره.
👉 Link: https://youtu.be/pj3Yl9VCjiM
Thanks to: @microfrontend_ir
#python #پایتون
〰️〰️〰️〰️〰️
© @DjangoEx
👉 Link: https://youtu.be/pj3Yl9VCjiM
Thanks to: @microfrontend_ir
#python #پایتون
〰️〰️〰️〰️〰️
© @DjangoEx
YouTube
معرفی دوره مبانی برنامه نویسی به زبان پایتون برای Data Science
ویدیو معرفی دوره مبانی برنامه نویسی به زبان پایتون برای تبدیل شدن به دانشمند داده یا دیتا ساینتیست . تو این ویدیو به چیستی و ضرورت دوره همچین دوره ای پرداختم. اگر نکته یا موردی بود خوشحال میشم کامنت بزارید
کانال تلگرام:
https://t.iss.one/microfrontend_ir
کانال تلگرام:
https://t.iss.one/microfrontend_ir
✔️ اول از همه بدانید و آگاه باشید که هرشرکتی داخل جابینجا و جاب ویژن و ایران تلنت هرروز آگهی جذب نیرو گذاشت ، یقینا یه جای کارش می لنگه
چون آگهی پی درپی توی یک پوزیشن کاری یک معنی میتونه داشته باشه اونم استعفای پی در پی
مطالعه بیشتر در توییتر
👉 Link: https://twitter.com/frbygn/status/1448057446686154756
پ ن: این وضعیت ۹۰٪ شرکت های داخل ایران هست که از بیرون شیک و پر زرق و برق به نظر میرسند.
پی.نوشت مهم: ما صرفا بازنشر کردیم مطلب فوق رو صحت و سقم این موضوعات از توان ما خارجه و امیدواریم که اینگونه نباشه
〰️〰️〰️〰️〰️
© @DjangoEx
چون آگهی پی درپی توی یک پوزیشن کاری یک معنی میتونه داشته باشه اونم استعفای پی در پی
مطالعه بیشتر در توییتر
👉 Link: https://twitter.com/frbygn/status/1448057446686154756
پ ن: این وضعیت ۹۰٪ شرکت های داخل ایران هست که از بیرون شیک و پر زرق و برق به نظر میرسند.
پی.نوشت مهم: ما صرفا بازنشر کردیم مطلب فوق رو صحت و سقم این موضوعات از توان ما خارجه و امیدواریم که اینگونه نباشه
〰️〰️〰️〰️〰️
© @DjangoEx
👍1