您的位置 首页 科技新闻

学习Python的最佳方法(二)——面向对象编程和python 多线程

我们在上节课学习了Python 0级的内容,这节课继续学习python 教程。

第1级:面向对象的编程

Python中的所有东西都是一个对象。

编写计算机程序有许多不同的方法、模型或范例。

最流行的编程范例之一是面向对象编程(OOP)。

在面向对象编程中,对象是指类的特定实例。

一个类就像是一个对象可以采取的行动的蓝图。

例如,在Python中,Person类可能看起来像这样。

上面声明的类描述任何Person对象的状态和行为。

例如,任何Person对象都将具有名称和年龄。

在OOP的术语中,名称和年龄被称为对象属性。

还可以对任何Person对象调用get_name(),以返回该Person的名称。

我们称之为get-name对象方法。

换句话说,Python对象具有在对象的Class中定义的属性和方法。

以下是创建Person对象的方法

面向对象编程本质上是构建和设计代码的一种方法。

但是,我想让你明白,这不是唯一的方法,也不一定是最好的方法。

为了学习Python中的OOP,你需要通过几个步骤来进行。

第1步:学习OOP的概念

正如我之前提到的,OOP是一种编程范例,是一种构造和设计代码的方法。

OOP概念不是Python独有的,因此你将学习的概念将很容易地转换为任何其他编程语言。

这些概念的一些示例是继承,封装和多态。

因此,在进入Python的OOP之前,首先要确保在抽象层次上理解这些概念。

第2步:了解Python的类和对象

在此步骤中,你需要应用在上一步中学习但特别是在Python中学习的抽象概念。

熟悉编写类和创建对象。

编写从其他类继承的类,并研究创建的对象的属性和方法。

第3步:使用OOP解决Python问题

这是至关重要的一步。

在此步骤中,你将学习如何使用OOP来设计和构造代码。

事实上,这一步更多的是艺术,而不是科学。这意味着变得更好的唯一方法是通过练习,练习和更多练习。

再次使用Python解决更多问题,但尝试以面向对象的方式构建解决方案。

第2级:并行和并行编程

单核处理器时代已经一去不复返了。

现在,无论是购买现成的笔记本电脑还是为企业购买高端服务器,处理器肯定会有多个核心。

有时,你的程序需要利用这些多核来并行运行。

这可能导致吞吐量增加、性能提高和响应能力提高。

但是,这里我要明确一点,如果高性能和增加的吞吐量非常重要,那么Python并不是支持并行编程的最佳语言。

但由于这是一篇关于Python的文章,所以我们将重点放在Python上。

在开始编写第一个并行程序之前,应该先学习一些并行处理概念。

下面是一些概念。

相互排斥

当有一些数据在多个线程或进程之间共享时,同步对这些共享资源的访问是很重要的。

如果不这样做,可能会发生竞争,这可能导致意外的,有时甚至是灾难性的后果。

互斥意味着一个线程会阻止其他需要使用共享资源的并发线程的进一步发展。

锁是互斥的各种实现之一。

为了理解锁是什么,可以从概念的角度来考虑它们。

如果一个线程想要访问一个共享资源,这个线程必须在被授予对该资源的访问权之前获取一个锁。

在完成对资源的处理之后,它会释放这个锁。

如果锁因被另一个线程抓取而不可用,则线程必须等待首先释放锁。

这个简单的概念保证一次至多有一个线程可以访问共享资源。

死锁

死锁是指程序完全停止时,因为某些线程无法进一步进行,因为它们无法获取锁。

例如,假设线程A正在等待线程B释放锁。同时,线程B正在等待线程A释放线程A当前持有的另一个锁。

在这种可怕的情况下,线程A和线程B都不能再前进了,所以您的程序被托管了!

这就是僵局。

这种情况比你想象的要频繁。

更糟的是,这也是最难调试的问题之一。

python的并行编程

只有在你熟悉上述概念后,才能学习如何使用Python编写并发程序。

首先,应该了解python对多处理的定义与多线程的不同。(顺便说一下,从操作系统的角度来看,这与线程和进程完全无关)。

要从python的角度理解多处理和多线程之间的区别,需要学习和理解全局解释器锁(gil)。还需要了解线程、队列和多处理python模块。

所有这些模块都为你提供了编写并行程序所需的原语。

我们将在下一课继续讲解下一级的python 教程。

关于作者: 少儿编程教育

万服编程(www.seodsj.com)专注少儿编程的教育分享,为家长提供一个可以方便给孩子学习编程的平台,使孩子们赢在起跑线,并且能够通过少儿编程教育提高孩子的各方面综合能力。

热门文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注