诺森图书音像专营店
  • 扫码下单

  • 音像Python编程入门与项目应用任晓霞,向静,杨守良
  • 正版
    • 作者: 任晓霞,向静,杨守良著 | 任晓霞,向静,杨守良编 | 任晓霞,向静,杨守良译 | 任晓霞,向静,杨守良绘
    • 出版社: 原子能出版社
    • 出版时间:2022-03-30
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    店铺装修中

    商家:
    诺森图书音像专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    诺森图书音像专营店

  • 商品参数
    • 作者: 任晓霞,向静,杨守良著| 任晓霞,向静,杨守良编| 任晓霞,向静,杨守良译| 任晓霞,向静,杨守良绘
    • 出版社:原子能出版社
    • 出版时间:2022-03-30
    • 版次:1
    • 印次:1
    • 印刷时间:2023-02-01
    • 开本:16开
    • ISBN:9787522119137
    • 版权提供:原子能出版社
    • 作者:任晓霞,向静,杨守良
    • 著:任晓霞,向静,杨守良
    • 装帧:暂无
    • 印次:1
    • 定价:98.00
    • ISBN:9787522119137
    • 出版社:原子能
    • 开本:16开
    • 印刷时间:2023-02-01
    • 语种:暂无
    • 出版时间:2022-03-30
    • 页数:暂无
    • 外部编号:31657447
    • 版次:1
    • 成品尺寸:暂无

    篇 学习准备
    章 计算机原理
    1.1 计算机构成
    1.2 操作系统
    1.3 编程语言
    1.4 进制
    1.5 原码、补码与反码
    第2章 初识Python语言
    2.1 Python语言的前世今生
    2.2 Python解释器
    . 搭建Python语言的开发环境
    2.4 Python程序
    第2篇 基础知识
    第3章 变量与转义字符
    3.1 变量
    3.2 格式化输出
    3.3 转义字符
    第4章 数据类型
    4.1 数值
    4.2 布尔型bool
    4.3 字符串str
    4.4 列表list
    4.5 元组tuple
    4.6 集合set
    4.7 字典dict
    4.8 变量验type
    4.9 数据类型的转换
    4.10 控制台输入
    第5章 运算符
    5.1 算术运算符
    5.2 赋值运算符
    5.3 比较运算符
    5.4 逻辑运算符
    5.5 位运算符
    第6章 逻辑语句
    6.1 条件结构逻辑语句
    6.2 随机数模块random
    6.3 循环结构逻辑语句
    第7章 函数
    7.1 普通函数
    7.2 变量作用域
    7.3 匿名函数
    7.4 生成器函数
    7.5 装饰器
    第8章 编程常用算法
    8.1 树
    8.2 递归
    8.3 排序
    第3篇 高级知识
    第9章 面向对象编程
    9.1 面向对象思想
    9.2 类和对象
    9.3 调用对象self
    9.4 属
    9.5 方法
    0章 继承与多态
    10.1 单继承
    10.2 多继承
    10.3 重写与调用
    10.4 多态
    1章 面向对象高级编程
    11.1 属查看dir
    11.2 可视化与hash
    11.3 运算符重载
    11.4 容器化
    11.5 反
    11.6 上下文管理
    2章 异常与调试
    12.1 异常处理
    12.2 try…eep…s语句
    1. try…except…else…finally语句
    12.4 程序调试
    3章 模块与包
    13.1 模块化
    13.2 Python程序打包
    4章 文件I/O
    14.1 打开文件
    14.2 关闭文件
    14.3 文件读写
    14.4 目录作5章 内置函数
    15.1 函数式编程
    15.2 内置普通函数
    15.3 内置高阶函数
    6章 字符串作16.1 字符串查找作16.2 字符串修改作16.3 字符串删除操作.
    7章 日期和时间
    17.1 日期和时间处理模块datetime
    17.2 datetime模块中的datetime类
    第4篇 编程进阶
    8章 并发编程
    18.1 多线程的相关概念
    18.2 多线程开发
    18.3 异步开发
    9章 数据库编程
    19.1 数据库介绍
    19.2 Python数据库编程
    19.3 Python数据库编程——Oracle
    19.4 Python数据库编程——MySL
    第20章 网络编程
    20.1 网络知识
    20.2 socket模块
    20.3 TCP编程
    20.4 UDP编程
    20.5 I/O多路复用
    2章 GUI编程
    21.2 Python GUI库
    21.3 创建应用程序
    21.4 常用控件
    21.5 布局
    21.6 事件处理
    第5篇 应用开发
    第22章 Python Web后端开发
    22.1 初识Web开发
    22.2 Python Web后端开发主流框架
    2. 基于Django企业级框架的Web后端开发
    22.4 基于Flask微型框架的Web后端开发
    第章 Python爬虫开发
    .1 爬虫概述
    .2 爬虫的原理和基本步骤
    . urllib模块
    .4 Beautiful Soup
    第24章 Python大数据开发与人工智能开发
    24.1 Python与大数据开发
    24.2 Python与人工智能开发
    参考文献

    在线试读(无图)第4篇编程进阶8章并发编程人类有时可以同时处理两件事情,比如,一边吃饭一边看电视,吃饭和看电视这两件事情是并行处理的。而计算机处理问题的方式与人类不同,同一个CPU处理问是的,一次只能处理一个命令。那么,计算机一边播放音乐一边处理文档是如何实现的呢?这就要依靠并发编程了。
    使用并发编程可以充分利用计算机的时间碎片,为每个任务分配一小段时间,多个任务交替执行,由于计算机执行速度很快,只要分配的时间片足够短,多个任务就好像在同时进行一样。
    18.1多线程的相关概念18.1.1进程与线程进程是计算机程序关于某数据集上的一次运行活动,是操作系统资源分配和调度的基本单位。
    在操作系统中,每执行一个应用程序就会创建一个新的进程。每一个进程都有自己的地址空间、内存和数据,操作系统负责管理进程并为进程分配时间等资源。由于每个进程都包含独立的数据,所以不同进程之间不能直接共享数据,只能使用进程间通信。
    一个进程中至少有一个线程来执行程序,如果一个进程想要同时处理多个任务,就需要多个线程并发执行,其中每个任务都对应一个线程。例如,在使用时,可以同时开启多个会话。
    进程与线程的关系如图18-1所示。
    18.1.2并行与并发并行是指多个任务同时执行,在操作系统中是指多个任务无论是从宏观上还是微观上都是同时执行。
    并发是指在一段时间内,多个任务从宏观上看起来是同时执行,但是实际从微观来看还是顺序执行。
    使用计算机时,用户可以同时处理多个任务,如:一边播放音乐,一边打开浏览器浏览网页,还可以打开记事本记录今天要处理的事情,这些任务对应的就是进程,这些进程在用户看来是同时在处理,但是在计算机的微观层面上也是同时在处理呢?
    现在的计算机普遍都是多核CPU,如果计算机在分配资源时,将这3个任务分配给3个CPU去执行,那么这3个进程的运行状态就是并行。如果这3个任务分配给了同一个CPU,CPU为每个进程分配一小段时间片,使得这3个进程可以交替执行,那这3个进程的运行状态就是并发,如图18-2所示。
    并行和并发的概念也同样适用于线程,不过在Python中,同一个进程中的线程只会占用一个内核CPU,如果想在Python中实现并行,只能创建多个进程。本书在此之前的示例执行的都是单一任务,如果要同时执行多种任务怎么办呢?在Python中,有以下三种方法。
    种方法,创建多个进程,每个进程执行一种任务。
    第二种方法,创建一个进程,一个进程中创建多个线程,每个线程执行一个任务。
    第三种方法,创建多个进程,每个进程中创建多个线程,进程和线程同时执行任务(这种方法过于复杂,实际开发中很少采用)。
    执行多种任务的方法概括起来如图18-3所示。
    创建进程需要消耗更多的资源,而且一般需要执行多任务时,各个任务之间可能有先后顺序,也可能需要进行数据传输和交换,而进程之间数据无法共享,只能使用进程间通信,因此一般我们选择使用多线程的方式来执行多任务。
    使用多线程可以完成并发,实现宏观上的“多任务”模式,多个线程是属于同一个进程的,这里的“多任务”是指同一个进程内的多件任务。例如,运行时,我们在会话窗口输入文字的同时也能接收到对方传来的消息,这就需要两个线程来分别完成“接收消息”和“输入文字”的任务。
    编程宝典使用多线程的优点使用多线程有以下几个优点。
    (1)使用多线程编程,可以将占据时间长的任务放到后台去处理,例如,使用word打印文件时,将打印程序放到后台去处理,不影响用户继续编辑文件。
    (2)使用多线程编程,有时可以充分利用计算机的时间片段,提高程序的整体运行速度。例如,执行一些用户输入、网络收发数据等需要等待的任务时,将这些任务放到线程中去处理能提高程序的运行效率。
    (3)使用多线程编程,可以提高用户的使用体验,程序的交互。例如,在视频播放时,用户可以随时点击暂停按钮,停止播放。
    18.1.3线程的生命周期
    一个线程有五种状态,分别为新建、就绪、运行、阻塞和死亡。
    (1)新建状态:新创建的线程对象处于新建状态。
    (2)就绪状态:当调用线程对象的start()方法后,线程处于就绪状态,等待调度。
    (3)运行状态:处于就绪状态的线程获得CPU等资源后就可以为行状态,处于运行状态的线程可以执行本线程的代码。
    (4)阻塞状态:阻塞状态根据产生阻塞的原因又可以分为三种:等待阻塞、同步阻塞和阻塞。
    等待阻塞:一个A线程可以通过调用B线程的join()方法使A线程本身进入阻塞状态,直到B线程执行完后,A线程才从阻塞状态转变为就绪状态。
    同步阻塞:同步阻塞是指两个线程同时想访问共享数据时,一旦其中一个线程,比如A线程获得访问权限,那么B线程就进入阻塞状态,直到A线程访问完后,B线程才从阻塞状态转变为就绪状态。
    阻塞:在线程运行过程中,当调用sleep()函数或等待接收用户输入的数据时,线程进入阻塞状态,直到sleep()函数执行完或用户输入完,线程才从阻塞状态转变为就绪状态。
    处于运行状态的线程遇到以上几种阻塞情况时,进入阻塞状态。
    (5)死亡状态:当一个线程的程序执行完,或者发生错误或异常,线程就进入死亡状态。线程的五种状态之间的转换关系如图18-4所示。
    18.1.4线程安全实际开发过程中,很多时候都需要用到多线程,多个线程同时执行时,可能会同时访问共享数据。例如,某网络商店在期间搞活动,商品数量一共有n件,客户购买时,程序后台首先判断当前库存数量n大于0,如果大于0,客户就可以付款,相应地库存数量变为n-1。当有多个顾客同时购买时,就会有多个线程同时访问这段代码,如果A线程和B线程同时获得了当前的商品数量n,并且判断出n大于0,然后各自执行操作,可能会导致A和B都完时,库存数量本应变为n-2,却因为线程交替执行的原因导致库存数量变为n-1,导致数据不同步,产生逻辑错误,如图18-5所示。
    所以,在进行多线程开发时,当多个线程都需要访问共享数据时需要着重考虑线程安全问题。
    那么,线程安全的问题如何解决呢?
    目前,解决线程访问共享数据的安全问题,通用做法是给共享数据上一道锁。共享数据就好像一个密室,一开始处于未锁定状态,当线程访问共享数据时会将密室锁定,线程就无法再访问,等该线程访问完,将锁打开,线程才能继续访问,如图18-6所示。
    18.2多线程开发Python提了几个实现多线程开发的模块,例如:_thread和threading,等等。_thread和threading模块提供了创建和管理线程的方法,_thread是低级模块,threading模块提供了对_thread模块的封装,是高级模块。_thread模块中,当主线程结束时,子线程无论已完成都将被强制结束,而threading模块能确保重要子线程完成后进程才结束。所以,在实际开发时一般选用threading模块。
    18.2.1多线程在Python中,创建多线程有以下两种方式:使用_thread.start_new_thread()函数创建线程;使用threading模块提供的Thread类创建线程。
    1.使用_thread模块提供的start_new_thread()函数创建线程_thread模块提供了start_new_thread()方法来创建线程。其语法格式如下所示。
    _thread.start_new_thread(function,args[,kwargs])参数说明:Function:线程执行的函数。
    Args:元组类型,表示传递给function的参数。
    Kwargs:可选参数。
    返回值:线程的标识。
    _thread.start_new_thread()方法创建一个新线程并返回其标识。
    【例】使用_thread模块的start_new_thread()方法创建一个新线程。具体代码如下所示。
    import_threadimporttime

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购