【整理】Python之JIT、Django、Greenlet和Stackless

简介:

【JIT】

即时编译(Just-in-time compilation),又称为动态编译,是一种提高程序运行效率的方法。
通常程序有两种编译方式:静态编译与动态编译(直译)。在静态编译中,程序在执行前全部被翻译为机器码,而动态直译则是边运行边翻译。
即时编译器则混合了这二者,一句一句编译源代码,但是会将翻译过的代码缓存起来以降低性能损耗。相对于静态编译代码,即时编译的代码可以处理延迟绑定并增强安全性。即时编译器有两种类型,一是字节码翻译,二是动态编译翻译。

另外,一般来讲编译执行比解释执行要快,但是编译之后又不能跨平台,那我们就到目标平台上去,先编译再执行,这样就比纯解释要快了。这种编译是在“运行”的时候自动进行的,所以叫即时编译(JIT)。

Django

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC(Model View Controller)的设计模式,M是指数据模型,V是指用户界面,C则是控制器。
它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY(Don't Repeat Yourself)法则。在Django中Python被普遍使用,甚至包括配置文件和数据模型。

【Greenlet

Greenlet是Stackless的副产品,其将微线程称为 “tasklet” 。tasklet运行在伪并发中,使用channel进行同步数据交换。一个”greenlet”,是一个更加原始的微线程的概念,但是没有调度,或者叫做协程。这在你需要控制你的代码时很有用。你可以自己构造微线程的 调度器;也可以使用”greenlet”实现高级的控制流。例如可以重新创建构造器;不同于Python的构造器,我们的构造器可以嵌套的调用函数,而被嵌套的函数也可以yield一个值。Greenlet是作为一个C扩展模块给未修改的解释器的。

tasklet

一个tasklet对象对应一个Python线程内的微任务。Tasklet的特点就是轻量级和可移植性,并且可以作为系统线程或进程的非常好的替代物。在程序启动的时候,总是存在一个运行的主tasklet。

【Stackless】

Stackless Python是Python程序语言的一个增强版本。其能够使程序员获得基于线程编程的好处,而免受与传统线程模型相伴的性能和复杂度问题的困扰。Stackless为Python引入了微线程的概念(microthread),其占用系统资源少,属于轻量级的东东。如果使用得当,你将获得如下益处:
a) 更好的程序结构 
b) 更据可读性的代码
c) 提高程序员的代码生产力

在您想通过使用Stackless获得便利的时候,只有那么一点点的来自stackless模块的功能性信息需要你注意一下:

Microthreads:  tasklet封装了 允许以microthreads形式被启动的函数。 
Channels:channels可被用于两个tasklet之间的双向通信。 
Scheduling:内置的循环调度器。其可以被用于合作式或者优先级式调度tasklets。 

Serialisation:可以通过pickling方式将tasklets序列化到硬盘以便后期恢复。

【Pickling】

Stackless的主要特性之一就是其可以对tasklet进行pickle和unpickle。这意味着运行于tasklet内部的程序能够被持续不断的存储到文件或者字符串中。之后,其可以基于之前停止的点重新恢复运行,并且该行为不限于同一台机器。

【Scheduler

在Stackless Python之中存在一个简单的内置调度器(scheduler),其按顺序循环遍历调度器list以调度注册其中的tasklet。当一个tasklet被创建后,其自动被添加到调度器list的尾部。然而,调度器需要通过人为的主动调用才能开始工作。最简单的运行调度器的方式是采用stackless模块中提供的方法。该方法会移除主tasklet,然后轮流调度每一个注册的tasklet直到在调度器list为空。


目录
相关文章
|
19天前
|
前端开发 JavaScript UED
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
通过在Django项目中集成Channels和WebSocket,我们能够为前后端分离的应用添加实时通信功能,实现诸如在线聊天、实时数据更新等交互式场景。这不仅增强了应用的功能性,也提升了用户体验。随着实时Web应用的日益普及,掌握Django Channels和WebSocket的集成将为开发者开启新的可能性,推动Web应用的发展迈向更高层次的实时性和交互性。
43 1
|
1月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
96 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
5天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
13 4
|
7天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【10月更文挑战第10天】本文比较了Python中三个最受欢迎的Web框架:Django、Flask和Pyramid。Django以功能全面、文档完善著称,适合快速开发;Flask轻量灵活,易于上手;Pyramid介于两者之间,兼顾灵活性和安全性。选择框架时需考虑项目需求和个人偏好。
18 1
|
11天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【10月更文挑战第6天】本文比较了Python中三个最受欢迎的Web框架:Django、Flask和Pyramid。Django功能全面,适合快速开发;Flask灵活轻量,易于上手;Pyramid介于两者之间,兼顾灵活性和可扩展性。文章分析了各框架的优缺点,帮助开发者根据项目需求和个人偏好做出合适的选择。
22 4
|
1月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
74 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
1月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
70 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
17天前
|
存储 Shell 数据库
Python编程--Django入门:用户账户(二)
Python编程--Django入门:用户账户(二)
15 2
|
17天前
|
存储 数据库 Python
Python编程--Django入门:用户账户(一)
Python编程--Django入门:用户账户(一)
14 1
|
1月前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
68 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发