随笔分类 -  python核心编程

摘要:python中自定义排序函数 Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比 阅读全文
posted @ 2018-11-20 09:48 瀛洲小李 阅读(164) 评论(0) 推荐(0)
摘要:Web动态服务器-1 应用程序示例 Web动态服务器-2-传递数据给应用 阅读全文
posted @ 2018-05-14 19:12 瀛洲小李 阅读(700) 评论(0) 推荐(0)
摘要:Web静态服务器-2-显示需要的页面 Web静态服务器-3-使用类 阅读全文
posted @ 2018-05-14 19:02 瀛洲小李 阅读(734) 评论(0) 推荐(0)
摘要:Web静态服务器-1-显示固定的页面 阅读全文
posted @ 2018-05-14 18:56 瀛洲小李 阅读(917) 评论(0) 推荐(0)
摘要:HTTP协议简介 1. 使用谷歌/火狐浏览器分析 在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以: HTML是一种用来定义网页的文本,会HTML,就可以编写网页; HTTP是在网络上传输HTML的协 阅读全文
posted @ 2018-05-14 18:43 瀛洲小李 阅读(7678) 评论(0) 推荐(0)
摘要:同步应用 多个线程有序执行 运行结果: 总结 可以使用互斥锁完成多个任务,有序的进程工作,这就是线程的同步 阅读全文
posted @ 2018-05-14 17:37 瀛洲小李 阅读(175) 评论(1) 推荐(1)
摘要:多线程-非共享数据 对于全局变量,在多线程中要格外小心,否则容易造成数据错乱的情况发生 1. 非全局变量是否要加锁呢? 在多线程开发中,全局变量是多个线程都共享的数据,而局部变量等是各自线程的,是非共享的 阅读全文
posted @ 2018-05-14 17:34 瀛洲小李 阅读(211) 评论(0) 推荐(1)
摘要:同步的概念 1. 多线程开发可能遇到的问题 假设两个线程t1和t2都要对num=0进行增1运算,t1和t2都各对num修改10次,num的最终的结果应该为20。 但是由于是多线程访问,有可能出现下面情况: 在num=0时,t1取得num=0。此时系统把t1调度为”sleeping”状态,把t2转换为 阅读全文
posted @ 2018-05-14 17:27 瀛洲小李 阅读(168) 评论(0) 推荐(1)
摘要:进程VS线程 功能 进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ 线程,能够完成多任务,比如 一个QQ中的多个聊天窗口 定义的不同 进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不 阅读全文
posted @ 2018-05-14 16:57 瀛洲小李 阅读(192) 评论(0) 推荐(0)
摘要:多线程-共享全局变量 列表当做实参传递到线程中 总结: 在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成多线程之间的数据共享(这点要比多进程要好) 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全) 阅读全文
posted @ 2018-05-14 16:52 瀛洲小李 阅读(163) 评论(0) 推荐(1)
摘要:threading注意点 1. 线程执行代码的封装 通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class,只要继承threading.Thread就可以了,然后重写run方法 示 阅读全文
posted @ 2018-05-14 16:44 瀛洲小李 阅读(179) 评论(0) 推荐(1)
摘要:多线程-threading python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用 1. 使用threading模块 单线程执行 多线程执行 2. 主线程会等待所有的子线程结束后才结束 3. 查看线程数量 阅读全文
posted @ 2018-05-14 16:39 瀛洲小李 阅读(241) 评论(0) 推荐(0)
摘要:进程池Pool 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。 初始化Pool时,可以指定一个最大进程数,当有新 阅读全文
posted @ 2018-05-14 16:25 瀛洲小李 阅读(197) 评论(0) 推荐(0)
摘要:multiprocessing 如果你打算编写多进程的服务程序,Unix/Linux无疑是正确的选择。由于Windows没有fork调用,难道在Windows上无法用Python编写多进程的程序? 由于Python是跨平台的,自然也应该提供一个跨平台的多进程支持。multiprocessing模块就 阅读全文
posted @ 2018-05-14 16:19 瀛洲小李 阅读(310) 评论(0) 推荐(0)
摘要:多次fork问题 如果在一个程序,有2次的fork函数调用,是否就会有3个进程呢? 父子进程的执行顺序 父进程、子进程执行顺序没有规律,完全取决于操作系统的调度算法 阅读全文
posted @ 2018-05-14 16:12 瀛洲小李 阅读(254) 评论(0) 推荐(0)
摘要:进程的创建-fork 1. 进程 VS 程序 编写完毕的代码,在没有运行的时候,称之为程序 正在运行着的代码,就成为进程 进程,除了包含代码以外,还有需要运行的环境等,所以和程序是有区别的 2. fork( ) Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中 阅读全文
posted @ 2018-05-14 16:07 瀛洲小李 阅读(683) 评论(0) 推荐(0)
摘要:协程-greenlet版 为了更好使用协程来完成多任务,python中的greenlet模块对其封装,从而使得切换任务变的更加简单 安装方式 使用如下命令安装greenlet模块: 运行效果 gevent greenlet已经实现了协程,但是这个还的人工切换,是不是觉得太麻烦了,不要捉急,pytho 阅读全文
posted @ 2018-05-14 15:53 瀛洲小李 阅读(220) 评论(0) 推荐(0)
摘要:协程 协程,又称微线程,纤程。英文名Coroutine。 协程是啥 首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元。 为啥说他是一个执行单元,因为他自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以 阅读全文
posted @ 2018-05-14 12:57 瀛洲小李 阅读(214) 评论(1) 推荐(0)
摘要:epoll版-TCP服务器 1. epoll的优点: 2. epoll使用参考代码 2. 说明 EPOLLIN (可读) EPOLLOUT (可写) EPOLLET (ET模式) epoll对文件描述符的操作有两种模式:LT(level trigger)和ET(edge trigger)。LT模式是 阅读全文
posted @ 2018-05-14 12:53 瀛洲小李 阅读(178) 评论(0) 推荐(0)
摘要:单进程服务器-非堵塞模式 服务器 客户端 阅读全文
posted @ 2018-05-14 12:47 瀛洲小李 阅读(176) 评论(0) 推荐(0)