آشنایی با تابع ()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)
آشنایی با تابع ()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)
The lead from Wall Street offers little clarity as the major averages opened lower on Friday and then bounced back and forth across the unchanged line, finally finishing mixed and little changed.The Dow added 33.18 points or 0.10 percent to finish at 34,798.00, while the NASDAQ eased 4.54 points or 0.03 percent to close at 15,047.70 and the S&P 500 rose 6.50 points or 0.15 percent to end at 4,455.48. For the week, the Dow rose 0.6 percent, the NASDAQ added 0.1 percent and the S&P gained 0.5 percent.The lackluster performance on Wall Street came on uncertainty about the outlook for the markets following recent volatility.
Traders also expressed uncertainty about the situation with China Evergrande, as the indebted property company has not provided clarification about a key interest payment.In economic news, the Commerce Department reported an unexpected increase in U.S. new home sales in August.Crude oil prices climbed Friday and front-month WTI oil futures contracts saw gains for a fifth straight week amid tighter supplies. West Texas Intermediate Crude oil futures for November rose $0.68 or 0.9 percent at 73.98 a barrel. WTI Crude futures gained 2.8 percent for the week.