深度讲述Python标准语言特性

开发 后端
本文首先介绍一下Python标准语言的历史,总结了Python的强大之处和不足并且指出了与其他脚本语言相比,以及Python语言与其他语言的优势所在。

下面着重讲述学习Python标准语言时碰到的相关难题和问题,以及学习Python标准语言的技巧,如何更好的进行Python标准语言的学习,希望本文能给大家带来帮助。

模拟中的核心概念是进程。一个进程只是一个对象,它完成某些任务,随后在它准备完成下一个任务之前有时会等待一会儿。在 SimPy 中,您还可以“钝化”进程,这意味着在一个进程完成一个任务后,只有当其它进程要求该进程完成其它任务时,它才会去做。

把进程当作尝试完成一个目标,常常是很有用的。在编写进程时,通常把它编写成可以在其中执行多个操作的循环。在每个操作之间,可以插入 Python“yield”语句,它让模拟调度程序在返回控制之前执行每个等待进程的操作。

进程执行的许多操作取决于资源的使用。资源只是在可用性方面受到限制。在生物学模型中,资源可能是食物供应;在网络模型中,资源可以是路由器或有限带宽通道;在我们的市场模拟中,资源是付款通道。资源执行的唯一任务是在任何给定的时间内将它的使用限于一个特定的进程上。

在 SimPy 编程模型下,进程单独决定它要保留资源的时间有多长,资源本身是被动的。在实际系统中,SimPy 模型可能适合概念性方案,也可能不适合;很容易想象到资源在本质上会限制其利用率(例如,如果服务器计算机在必需的时间帧内没有获得满意的响应,则它会中断连接)。

但作为编程问题,进程或资源是否是“主动”方就不是特别重要(只要确保您理解了您的意图)。最后一个 SimPy 类是监控程序。实际上监控程序不是很重要,只不过它很方便。监控程序所做的全部任务就是记录向它报告的事件,并保存有关这些事件的统计信息(平均值、计数、方差等)。

该库提供的 Monitor 类对记录模拟措施是个有用的工具,但您也可以通过您想使用的其它任何技术来记录事件。事实上,我的示例使 Monitor 子类化,以提供某些(稍微)增强的能力。

当我最初考虑食品杂货店模型时,我认为模拟可以解答几个直接问题。例如,我想象店主可能会选择购买改进的扫描仪(减少 ITEMTIME)。或者选择雇佣更多职员(增加 AISLES)。我想只要在每个方案下运行这个模拟(假设雇员和技术成本给定的情况下),并确定上面两种选择哪种更能减少成本。

减少一条付款通道不是使平均等待时间增加 1/5 或类似的情况,而是使它增加了大约 4 倍。而且,最不幸的顾客(在这些特定的运行期间)的等待时间从 6 分钟增加到了 21 分钟。如果我是经理,我认为了解这个极限情况对顾客满意度而言是极其重要的,并确定上面两种选择哪种更能减少成本。

Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为 ABC 语言的一种继承。之所以选中 Python(大蟒蛇的意思)作为程序的名字,是因为他是一个Monty Python的飞行马戏团的爱好者。

ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是非开放造成的。Guido 决心在 Python 中避免这一错误(的确如此,Python 与其它的语言如C、C++和Java结合的非常好)。同时,他还想实现在 ABC 中闪现过但未曾实现的东西。

就这样,Python在Guido手中诞生了。实际上,第一个实现是在Mac机上。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。

责任编辑:chenqingxiang 来源: IT专家网
相关推荐

2010-02-23 09:52:39

2010-02-02 09:08:39

Python 特性

2010-03-01 17:47:53

Python语言

2010-03-05 15:43:46

Android SDK

2010-03-01 14:50:06

Python 工具

2010-02-03 11:26:28

2009-12-29 08:54:09

Ubuntu CUDA

2010-03-01 18:33:30

2010-03-11 20:33:14

Python编程语言

2009-12-25 09:17:50

2009-12-28 16:39:56

Fedora 9

2009-12-31 15:05:23

Ubuntu Virt

2011-05-17 14:53:35

C

2010-02-02 13:22:06

Python面向对象

2010-02-26 10:38:29

Python语言

2010-01-13 11:14:06

C++虚表

2009-12-31 10:15:10

Ubuntu9.04

2010-03-01 18:07:53

Python语言

2009-12-25 10:36:10

ASP.NET 和 X

2010-01-12 15:24:48

C++语言
点赞
收藏

51CTO技术栈公众号