Python学习周总结(18.03.19 - 03.23)

  本周是培训的第四周,也是python语言基础阶段的最后一周,重点在于多进程、多线程及网络编程的掌握,主要知识概要如下所示:

1、多重继承

  • 概念:如果一个类有多个父类,而多个父类又有公共的父类(菱形继承,钻石继承),即为多重继承

  • 在搜索属性和方法时搜索的依据是C3算法(有点类似于广度优先搜索)。这是python3中的一个改进,在此之前(python2)搜索的算法是深度优先搜索(DFS,depth first search)

  • 建议:不要轻易使用多重继承,会使系统出现混乱。在多重继承中,将第一个之后的类设置为抽象类,只绑定方法(行为),不绑定属性

2、正则表达式 (工具 - 定义字符串的匹配模式)

  • 参考资料:《正则表达式30分钟入门教程》
    例:
    import re
    name = input("请输入用户名:")
    m = re.match(r"^\w{6,20}$", name) # ^:字符串的开始 $:字符串的结束 match:从头开始匹配 search:从任意位置开始匹配
    if m:
    print(m.span()) # 取到匹配的范围
    print(m.group()) # 取到匹配的内容

  • 替换(re.sub() 替换指定字符串)
    sentence = "fuckshitFuckshit"

    re.IGNORECASE:忽略大小写

    sub_sentence = re.sub(r"fuck|shit","*",sentence,flags=re.IGNORECASE)
    print(sub_sentence)

3、多进程、多线程

  • 进程:操作系统分配内存的基本单位,进程之间的内存是相互隔离的,相互通信要通过IPC机制(管道,套接字)

  • 线程:一个进程可以进一步划分为多个线程,线程是进程的执行单元,也是操作系统分配cpu的基本单元,线程越多,占用的cpu时间越多。线程可以共享数据,而进程的内存不可共享

  • 使用多进程、多线程的原因:
    1)为了得到更多的cpu调度,遇到耗时间的任务,可把任务分解成更多子任务去执行,(缩短程序的执行时间,提升性能)
    2)让用户获得更好的体验

  • 创建多进程

multiprocessing - 多进程 创建新进程

from multiprocessing import Process

创建一个子进程

Process(target=output).start()

  • 创建多线程
    1)直接创建Thread对象并通过target参数指定线程启动后要执行的任务
    2)通过继承Thread自定义线程,通过重写run方法指定线程启动后执行的任务
    例:
    (直接创建)
    from threading import Thread

    daemon = True:守护线程(不值得保留的线程)

    其他线程如果都执行完毕了那么守护线程自动结束

    t = Thread(target=output, args=("ping",),daemon=True)

    (通过类创建)
    class PrintThread(Thread):
    def init(self, string, count):
    super().init()
    self._string = string
    self._count = count

      def run(self):
          for _ in range(self._count):
              print(self._string, end="", flush=True)
    

    t = PrintThread("PONG",100)
    t.start()

  • 加锁
    from threading import Lock
    lock = Lock()

    当多个线程同时访问一个资源的时候就有可能因为竞争资源导致资源状态错误

    被多个线程访问的资源我们通常称之为临界资源,对临界资源的访问需要加上保护

    lock.acquire() # 加锁,不必需别加锁
    lock.release() # 不管操作如何,总要释放锁,否则会死锁

4、TCP/UDP
TCP - Transfer Control Protocol --- 保证传输无错
UDP - User Datagram Protocol --- 不保证传输无错

  本周没有过多的课程作业,课余练习期间自主运用多线程知识将贪吃蛇游戏的界面处理与外界事件处理分开,消除了卡顿对游戏效果的影响;利用TCP创建简易对话应用,并运用多线程分别控制收、发消息过程,使得收发消息不受顺序的影响,畅通自如;利用UDP进行指定图片的传输;运用多线程改写之前通过JSON下载网络API提供的图片信息,速度较之前的单线程有了明显的提高。此外,通过一定的练习对正则表达式在实际开发中的应用有了一定的把握。
  周五进行了阶段性测试,自我感觉稳了。现在开始渐渐意识到编程的难点不在于代码的书写,而在于思维是否清晰。只要能具体地将任务的流程、需求、关键点等信息清晰地描述出来,再用代码实现并非难事。如果做不到,便会出现卡壳,出错的概率也会大大增加。期待下一周的前端知识~
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,207评论 4 16
  • 一文读懂Python多线程 1、线程和进程 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运...
    星丶雲阅读 1,442评论 0 4
  • 一位大学女同学,来自我的故乡。仅仅因为她曾在人前维护我几次,作为报答我愚蠢的维护她几次。人们口中,她成了我的“妹...
    繁简繁阅读 213评论 1 0
  • 1. 如果摒弃道德约束,仔细去读米兰昆德拉《慢》里面关于T夫人的描写,会觉得T夫人果然是深懂生活艺术的高手。 T夫...
    果果在简书阅读 528评论 0 8
  • 晨练第253天:跳绳200个 读经第73天:孟子 我的理解和收获 1通过孟子与梁襄王的对话,我的体会是:每个王都想...
    山缘有约阅读 200评论 0 1