Python4Finance
9.35K subscribers
567 photos
41 videos
152 files
758 links
کانال Python4Finance
آموزش پایتون در اقتصاد و مدیریت مالی
هر روز چند نکته را در خصوص پایتون برای مالی بیاموزیم
***
ارتباط با من
b2n.ir/y72935
***
آپارت:
aparat.com/Python4Finance
کانال چالش ها:
t.me/python4finance_challenge
Download Telegram
آشنایی با تابع ()compile - مقدمه ای بر JiT
اگر از کاربران قدیمی پایتون باشید، یکی از مسائلی که همیشه به آن اشاره می شد کندی برنامه های پایتون به دلیل استفاده از مفسر بود. اگر چه استفاده از مفسر برای کارهای علم داده که عموما با آزمون و خطا به حل مسئله می پردازیم خیلی هم بد نبود و حتی سرعت توسعه نرم افزار را بالا می برد اما برای توسعه برنامه های تجاری راهکار بهینه ای نبود. خوشبختانه در نسخه های اخیر پایتون، JiT یا همان اجرای در لحظه (Just in Time) وارد ادبیات پایتون شده است.
یکی از توابع معرفی شده در این خصوص تابع ()compile است. این تابع به نحو قابل قبولی باعث بهبود عملکرد برنامه می شود، چرا که بایت‌کد که توسط ()compile تولید می‌شود، سریعتر از سورس برنامه اصلی نوشته شده به زبان پایتون اجرا می‌شود زیرا قبلاً به یک فرم قابل اجرا توسط مفسر تبدیل شده است.

یک مثال
#code by @python4finance
source_code = """
a=5
for i in range(a):
print(i)
if i==3:
print("*")
"""
compiled_code = compile(source_code, filename="<string>", mode="exec")
exec(compiled_code)


#پایتون_پیشرفته
#JiT
#compile

پایتون برای مالی
🆔 t.me/python4finance
🆔 ble.ir/python4finance
29
آشنایی با تابع ()compile - مقدمه ای بر JiT - بخش دوم
یکی دیگر از ویژگی های هیجان انگیز تابع ()compile ، امکان توزیع برنامه بدون در اختیار گذاشتن سورس کد برنامه در اختیار استفاده کننده نهایی است. در حالت عادی مجبور بودیم که کل سورس برنامه را در اختیار استفاده کننده نهایی قرار دهیم که این موضوع باعث ایجاد نگرانی در دسترسی به کدها را داشت. به کمک تابع ()compile و ماژول marshal به راحتی می توان برنامه های پایتون را کامپایل کرد که علاوه بر سرعت بالاتر اجرای برنامه، امنیت فایل ها هم تا حدودی حفظ شود.

یک مثال

#code by @python4finance

import marshal

source_code = """
a=5
for i in range(a):
print(i)
if i==3:
print("*")
"""
compiled_code = compile(source_code, '<string>', 'exec')

with open('compiled_code.pyc', 'wb') as file:
marshal.dump(compiled_code, file)


برای خواندن فایل کامپایل شده هم به صورت زیر عمل می کنیم:
import marshal

with open('compiled_code.pyc', 'rb') as file:
compiled_code = marshal.load(file)

exec(compiled_code)



#پایتون_پیشرفته
#JiT
#compile

پایتون برای مالی
🆔 t.me/python4finance
🆔 ble.ir/python4finance
26