你好,我是尹会生。
这一章,我用了大量篇幅为你介绍了 Python 与其周边程序之间互相访问的基本方法。总体来说分为三个主要策略:利用魔术方法封装有自己特性的对象,利用设计模式扩充对象间的关系,利用数据库持久化数据存储。接下来我们一起来回顾一下它们的主要特点和实现方法。
对程序员来说,实现业务需求时,总是缺少一个恰当的数据类型来描述业务数据。因为无论是基础数据类型还是 collections 扩展数据类型,都不足以体现业务的复杂程度,因此通常采用 JSON、XML 等数据交换格式,连接业务和 Python 数据类型。
JSON 可以很贴切地描述业务数据,而将 JSON 交给 Python 处理时,只使用基础数据类型,进行排序、数据筛选、数据修改等操作的时候,就显得力不从心了。这时就需要我们通过魔术方法封装一个特殊的 Python 对象来描述业务。因为 Python 语言,还有它的语法本身没有接口,所以这些魔术方法就作为对象的接口被其他对象调用。
相信这样描述你会觉得很抽象,所以这里我用一个扑克游戏的例子,为你讲解一下魔术方法的作用。
我想为一个游戏定义两副扑克牌,这时如果采用基本的数据类型无法体现出“红桃、黑桃、方片、梅花”以及“JQKA”。因此,我们可以采用 collections 来定义一个复合数据类型。
作者回复: 你的结论是对的,但是不唯一。 首先大量利用多核处理器,是要用多进程的方式,毕竟多线程没办法跨越物理和逻辑CPU。是否在每个进程里使用多线程,要看每个进程的任务情况,如果需要并行执行程序,那么多线程的确要比单进程单线程快,但是如果是进行连续的计算,多线程就没有自己的优势了,毕竟创建和销毁线程,解决线程冲突和线程间的切换也是需要一定的CPU开销的。 所以结论是跨越多个CPU必须要多进程,每个进程根据业务场景不同,使用单进程单线程或者创建多线程或者创建协程来充分利用CPU资源
编辑回复: 感谢指正,已更新🌹