05 2019 档案

摘要:1. 生成器 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状态,并配合next()函数进行迭代使用,我们可以采用更简便的语法,即生成器(g 阅读全文
posted @ 2019-05-24 10:03 GeorgeXu 阅读(171) 评论(0) 推荐(0) 编辑
摘要:如何判断一个对象是否可以迭代 可以使用 isinstance() 判断一个对象是否是 Iterable 对象: 可迭代对象的本质 我们分析对可迭代对象进行迭代使用的过程,发现每迭代一次(即在for...in...中每循环一次)都会返回对象中的下一条数据,一直向后读取数据直到迭代了所有数据后结束。那么 阅读全文
posted @ 2019-05-24 09:49 GeorgeXu 阅读(181) 评论(0) 推荐(0) 编辑
摘要:import multiprocessing import os import time import random def copy_file(queue, file_name,source_folder_name, dest_folder_name): """copy文件到指定的路径""" f_ 阅读全文
posted @ 2019-05-24 09:40 GeorgeXu 阅读(191) 评论(0) 推荐(0) 编辑
摘要:当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。 初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Po 阅读全文
posted @ 2019-05-24 09:33 GeorgeXu 阅读(162) 评论(0) 推荐(0) 编辑
摘要:Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信。 1. Queue的使用 可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序,首先用一个小实例来演示一下Queue的工作原理: 运行结果: 初始化Queue()对象 阅读全文
posted @ 2019-05-23 09:36 GeorgeXu 阅读(266) 评论(0) 推荐(0) 编辑
摘要:功能 进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ 线程,能够完成多任务,比如 一个QQ中的多个聊天窗口 定义的不同 进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源, 阅读全文
posted @ 2019-05-23 09:34 GeorgeXu 阅读(228) 评论(0) 推荐(0) 编辑
摘要:multiprocessing模块就是跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情 1. 2个while循环一起执行 说明 创建子进程时,只需要传入一个执行函数和函数的参数,创建一个Process实例,用start()方 阅读全文
posted @ 2019-05-23 09:27 GeorgeXu 阅读(225) 评论(0) 推荐(0) 编辑
摘要:1. 进程 程序:例如xxx.py这是程序,是一个静态的 进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。 不仅可以通过线程完成多任务,进程也是可以的 2. 进程的状态 工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进 阅读全文
posted @ 2019-05-23 09:26 GeorgeXu 阅读(141) 评论(0) 推荐(0) 编辑
摘要:import socket import threading def send_msg(udp_socket): """获取键盘数据,并将其发送给对方""" while True: # 1. 从键盘输入数据 msg = input("\n请输入要发送的数据:") # 2. 输入对方的ip地址 des 阅读全文
posted @ 2019-05-23 09:24 GeorgeXu 阅读(186) 评论(0) 推荐(0) 编辑
摘要:在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。 尽管死锁很少发生,但一旦发生就会造成应用的停止响应。下面看一个死锁的例子 运行结果: 此时已经进入到了死锁状态,可以使用ctrl-c退出 2. 避免死锁 程序设计时要尽量避免(银行家算法) 添加超时时间 阅读全文
posted @ 2019-05-23 09:23 GeorgeXu 阅读(130) 评论(0) 推荐(0) 编辑
摘要:当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制 线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁。 互斥锁为资源引入一个状态:锁定/非锁定 某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态变成“非锁 阅读全文
posted @ 2019-05-23 09:17 GeorgeXu 阅读(2407) 评论(0) 推荐(1) 编辑
摘要:同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。 "同"字从字面上容易理解为一起动作 其实不是,"同"字应是指协同、协助、互相配合。 如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B执行,再将结果给A;A再继续操作。 阅读全文
posted @ 2019-05-23 09:16 GeorgeXu 阅读(228) 评论(0) 推荐(0) 编辑
摘要:多线程开发可能遇到的问题 假设两个线程t1和t2都要对全局变量g_num(默认是0)进行加1运算,t1和t2都各对g_num加10次,g_num的最终的结果应该为20。 但是由于是多线程同时操作,有可能出现下面情况: 测试1 运行结果: 测试2 运行结果: 结论 如果多个线程同时对同一个全局变量操作 阅读全文
posted @ 2019-05-23 09:13 GeorgeXu 阅读(5289) 评论(0) 推荐(0) 编辑
摘要:运行结果: 列表当做实参传递到线程中 运行结果: 总结: 在一个进程内的所有线程共享全局变量,很方便在多个线程间共享数据 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全) 阅读全文
posted @ 2019-05-23 09:09 GeorgeXu 阅读(3360) 评论(0) 推荐(0) 编辑
摘要:1. 线程执行代码的封装 通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class,只要继承threading.Thread就可以了,然后重写run方法 示例如下: 说明 pytho 阅读全文
posted @ 2019-05-23 09:05 GeorgeXu 阅读(155) 评论(0) 推荐(0) 编辑
摘要:python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用 多线程执行 主线程会等待所有的子线程结束后才结束 查看线程数量 阅读全文
posted @ 2019-05-23 09:03 GeorgeXu 阅读(146) 评论(0) 推荐(0) 编辑
摘要:并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已) 并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的 阅读全文
posted @ 2019-05-23 08:56 GeorgeXu 阅读(116) 评论(0) 推荐(0) 编辑
摘要:早期的计算机网络,都是由各厂商自己规定一套协议,IBM、Apple和Microsoft都有各自的网络协议,互不兼容 为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议族(Internet Protocol Suite)就是通用协议标准。 因 阅读全文
posted @ 2019-05-23 08:55 GeorgeXu 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-05-23 08:52 GeorgeXu 阅读(148) 评论(0) 推荐(0) 编辑
摘要:TCP在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立通过三次握手,释放则需要四次握手, 所以说每个连接的建立都是需要资源消耗和时间消耗的。 1. TCP短连接 模拟一种TCP短连接的情况: 在步骤5中 阅读全文
posted @ 2019-05-23 08:47 GeorgeXu 阅读(15162) 评论(0) 推荐(2) 编辑
摘要: 阅读全文
posted @ 2019-05-23 08:46 GeorgeXu 阅读(154) 评论(0) 推荐(0) 编辑
摘要:tcp服务器一般情况下都需要绑定,否则客户端找不到这个服务器 tcp客户端一般不绑定,因为是主动链接服务器,所以只要确定好服务器的ip、port等信息就好,本地客户端可以随机 tcp服务器中通过listen可以将socket创建出来的主动套接字变为被动的,这是做tcp服务器时必须要做的 当客户端需要 阅读全文
posted @ 2019-05-23 08:38 GeorgeXu 阅读(123) 评论(0) 推荐(0) 编辑
摘要:服务器 参考代码如下: 客户端 参考代码如下: 阅读全文
posted @ 2019-05-23 08:38 GeorgeXu 阅读(163) 评论(0) 推荐(0) 编辑
摘要:如同上面的电话机过程一样,在程序中,如果想要完成一个tcp服务器的功能,需要的流程如下: 一个很简单的tcp服务器如下: 阅读全文
posted @ 2019-05-23 08:34 GeorgeXu 阅读(628) 评论(0) 推荐(0) 编辑
摘要:TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。 TCP通信需要经过创建连接、数据传送、终止连接三个步骤。 TCP通信模型中,在通信开始之前,一定要先建立 阅读全文
posted @ 2019-05-23 08:31 GeorgeXu 阅读(430) 评论(0) 推荐(0) 编辑
摘要:示例代码: 阅读全文
posted @ 2019-05-23 08:31 GeorgeXu 阅读(608) 评论(0) 推荐(0) 编辑
摘要:import socket def send_msg(udp_socket): """获取键盘数据,并将其发送给对方""" # 1. 从键盘输入数据 msg = input("\n请输入要发送的数据:") # 2. 输入对方的ip地址 dest_ip = input("\n请输入对方的ip地址:") 阅读全文
posted @ 2019-05-23 08:26 GeorgeXu 阅读(107) 评论(0) 推荐(0) 编辑
摘要:字符串通过编码成为字节码,字节码通过解码成为字符串。 其中decode()与encode()方法可以接受参数,其声明分别为: 其中的encoding是指在解码编码过程中使用的编码(此处指“编码方案”是名词),errors是指错误的处理方案。 详细的可以参照官方文档: str.encode() byt 阅读全文
posted @ 2019-05-23 08:24 GeorgeXu 阅读(1780) 评论(0) 推荐(0) 编辑
摘要:1. udp网络程序-发送数据 创建一个基于udp的网络程序流程很简单,具体步骤如下: 代码如下: 运行现象: 在Ubuntu中运行脚本: 在windows中运行“网络调试助手”: 2. udp网络程序-发送、接收数据 python脚本: 网络调试助手截图: 阅读全文
posted @ 2019-05-23 08:18 GeorgeXu 阅读(1537) 评论(0) 推荐(0) 编辑
摘要:创建socket 在 Python 中 使用socket 模块的函数 socket 就可以完成: 说明: 函数 socket.socket 创建一个 socket,该函数带有两个参数: Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX 阅读全文
posted @ 2019-05-23 08:09 GeorgeXu 阅读(155) 评论(0) 推荐(0) 编辑
摘要:01. 学习 Linux 终端命令的原因 Linux 刚面世时并没有图形界面,所有的操作全靠命令完成,如 磁盘操作、文件存取、目录操作、进程管理、文件权限 设定等 在职场中,大量的 服务器维护工作 都是在 远程 通过 SSH 客户端 来完成的,并没有图形界面,所有的维护工作都需要通过命令来完成 在职 阅读全文
posted @ 2019-05-21 11:00 GeorgeXu 阅读(166) 评论(0) 推荐(0) 编辑
摘要:函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式  定义函数时,是否接收参数,或者是否返回结果,是根据 实际的功能需求 来决定的! 1.1 无参数,无返回值 此 阅读全文
posted @ 2019-05-21 08:28 GeorgeXu 阅读(244) 评论(0) 推荐(0) 编辑
摘要:变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开存储的 数据 保存在内存中的一个位置 变量 中保 阅读全文
posted @ 2019-05-21 08:25 GeorgeXu 阅读(142) 评论(0) 推荐(0) 编辑
摘要:列表 元组 字典 字符串 公共方法 变量高级 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 —— 非零即真 假 False 0 复数型 (complex) 主要用于科学计算,例如:平面场问题、波动 阅读全文
posted @ 2019-05-21 08:16 GeorgeXu 阅读(185) 评论(0) 推荐(0) 编辑
摘要:函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用 函数的使用包含两个步骤: 定义函数 —— 封装 独立的功能 调用函数 —— 享受 封装 阅读全文
posted @ 2019-05-14 10:15 GeorgeXu 阅读(173) 评论(0) 推荐(0) 编辑
摘要:01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行代码 分支 —— 根据条件判断,决定执行代码的 分支 循环 —— 让 特定代码 重复 执行 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行代码 分支 —— 根据条件判断,决定执行代码的 分支 阅读全文
posted @ 2019-05-14 10:13 GeorgeXu 阅读(259) 评论(0) 推荐(0) 编辑
摘要:算数运算符 比较(关系)运算符 逻辑运算符 赋值运算符 成员运算符 运算符的优先级 01. 算数运算符 是完成基本的算术运算使用的符号,用来处理四则运算 在 Python 中 * 运算符还可以用于字符串,计算结果就是字符串重复指定次数的结果 02. 比较(关系)运算符 Python 2.x 中判断 阅读全文
posted @ 2019-05-14 10:11 GeorgeXu 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 01. 开发中的应用场景 判断的定义 如果 条件满足,才能做某件事情, 如果 条件不满足,就做另外一件事情,或者什么也不做 02. if 语句体验 2.1 if 判断语句基本语法 在 Python 中,if 语句 就是用来进行判断的,格式如下: 注意:代码的缩进为一个 tab 键,或者 4 个空 阅读全文
posted @ 2019-05-14 10:10 GeorgeXu 阅读(8216) 评论(0) 推荐(0) 编辑
摘要:0.1 标识符和关键字 1.1 标识符 标示符就是程序员定义的 变量名、函数名 名字 需要有 见名知义 的效果,见下图:  标示符可以由 字母、下划线 和 数字 组成 不能以数字开头 不能与关键字重名 思考:下面的标示符哪些是正确的,哪些不正确为什么? 1.2 关键字 关键字 就是在 Python 阅读全文
posted @ 2019-05-14 10:05 GeorgeXu 阅读(384) 评论(0) 推荐(0) 编辑
摘要:01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建 等号(=)用来给变量赋值 = 左边是一个变量名 = 右边是存储在变量中的值 = 左边是一个变量名 = 右边是存储在变量中的值 变量定义之后,后续就可以直接使用了 1) 变量演练1 —— iPyt 阅读全文
posted @ 2019-05-14 10:04 GeorgeXu 阅读(378) 评论(0) 推荐(0) 编辑
摘要:01. 算数运算符 算数运算符是 运算符的一种 是完成基本的算术运算使用的符号,用来处理四则运算 在 Python 中 * 运算符还可以用于字符串,计算结果就是字符串重复指定次数的结果 02. 算数运算符的优先级 和数学中的运算符的优先级一致,在 Python 中进行数学计算时,同样也是: 先乘除后 阅读全文
posted @ 2019-05-14 09:58 GeorgeXu 阅读(271) 评论(0) 推荐(0) 编辑
摘要:使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性。 单行注释(行注释) 以 # 开头,# 右边的所有东西都被当做说明文字,而不是真正要执行的程序,只起到辅助说明作用 示例代码如下: 以 # 开头,# 右边的所有东西都被当做说明文字,而不是真正要执行的程序,只起到辅助说明作用 示 阅读全文
posted @ 2019-05-14 09:55 GeorgeXu 阅读(141) 评论(0) 推荐(0) 编辑
摘要:Python 2.x 默认不支持中文,具体原因,等到介绍 字符编码 时给大家讲解 Python 2.x 的解释器名称是 python Python 3.x 的解释器名称是 python3 目前市场上有两个 Python 的版本并存着,分别是 Python 2.x 和 Python 3.x 新的 Py 阅读全文
posted @ 2019-05-14 09:40 GeorgeXu 阅读(329) 评论(0) 推荐(0) 编辑
摘要:Python 的创始人为吉多·范罗苏姆(Guido van Rossum) 一门简单直观的语言并与主要竞争者一样强大 开源,以便任何人都可以为它做贡献 代码像纯英语那样容易理解 适用于短期开发的日常任务 这些想法中的基本都已经成为现实,Python 已经成为一门流行的编程语言 阅读全文
posted @ 2019-05-14 09:37 GeorgeXu 阅读(567) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示