随笔分类 -  Python

摘要:1.非阻塞IO 2.阻塞IO 3.IO多路复用 3.1 IO多路复用中的select 服务端 3.2 linux上更好的IO多路复用epoll、selectors选择当前系统最优的IO多路复用机制 服务端 客户端 4.信号驱动IO 5.异步IO 6.五种IO模型的比较,个人觉得肯定还是异步IO好 阅读全文
posted @ 2018-10-28 21:01 _小溢 阅读(807) 评论(0) 推荐(0)
摘要:在python中多线程其实是被弱化了,因为由于GIL的原因,同一时间只有一个线程能访问CPU,即使你的CPU是多核的在python中因为多线程被弱化了,所以协程显的重要,能够在一个线程中提高CPU的利用率,一个线程中开启500个协程,4核CPU开启20个线程效率不错,4核CPU开启5个进程会比较不错 阅读全文
posted @ 2018-10-28 16:34 _小溢 阅读(670) 评论(0) 推荐(0)
摘要:# 分别使用urlopen和requests两个模块进行演示 # import requests # 需要安装的 # from urllib.request import urlopen # # url = 'http://www.baidu.com' # # # res1 = urlopen(url) # urlopen,获取到页面请求对象 # res2 = requests.get(url)... 阅读全文
posted @ 2018-10-28 16:30 _小溢 阅读(152) 评论(0) 推荐(0)
摘要:协程:能够在一个线程中实现并发效果的概念,能够巧妙的利用任务中的IO阻塞时间,在任务的执行过程中,检测到IO操作时就能够协程切换到别的任务中运行 阅读全文
posted @ 2018-10-28 15:38 _小溢 阅读(985) 评论(0) 推荐(0)
摘要:# pip 装模块 greenlet和gevent # 协程 # 与进程、线程一样也是实现并发的手段 # 创建一个线程、关闭一个线程都需要创建寄存器、栈等、需要消耗时间 # 协程本质上是一个线程 # 能够在多个任务之间切换来节省一些IO时间 # 协程中任务之间的切换时间开销,要远远小于进程或线程之间的切换 # 4CPU中,进程一般创建4+1个进... 阅读全文
posted @ 2018-10-28 14:43 _小溢 阅读(157) 评论(0) 推荐(0)
摘要:# concurrent.futures模块提供了高度封装的异步调用接口。 # 其中ThreadPoolExecutor:线程池,提供异步调用 # 其中ProcessPooExecutor:进程池,提供异步调用。之前学过multiprocessing中的Pool也是进程池。 # 在这个concurrent.futures模块中,线程池与进程池的所有方法接口都是相同的 # 基本方... 阅读全文
posted @ 2018-10-28 13:36 _小溢 阅读(152) 评论(0) 推荐(0)
摘要:# 队列是数据安全的,意思是自带锁,多线程间通信时,使用队列是好的,不会出现同一个数据被多个线程抢占,使用其他数据类型进行通信则需要自己实现锁功能 import queue # 普通先进先出队列 # q = queue.Queue() # 没有参数则表示队列没有指定深度 # q.put(1) # 如果队列指定了深度则到了深度后,会阻塞在这里等待队列有空间后再向队列中放入数据 # q.pu... 阅读全文
posted @ 2018-10-28 12:55 _小溢 阅读(715) 评论(0) 推荐(0)
摘要:1.线程中的条件 2.线程中的定时器 阅读全文
posted @ 2018-10-28 12:40 _小溢 阅读(771) 评论(0) 推荐(0)
摘要:# 线程中的信号量 # 和进程中的信号量概念一样,创建好信号量的深度后,同一时间只有n个线程可以访问被信号量保护的代码 # 同一时间只有4个线程可以访问被信号量保护的代码 # import time # from threading import Semaphore, Thread # # def func(sem, a, b): # sem.acquire() # ... 阅读全文
posted @ 2018-10-26 21:55 _小溢 阅读(1287) 评论(0) 推荐(0)
摘要:# 一般进程中,我们锁用的少,因为我们进程之间通信,很少会使用IPC中的管道、队列、Manager这些东西,而是使用一些中间件,而在这些中间件中,已经帮我们实现了进程之间锁的功能,访问消息中间件是不需要加锁的 # 线程锁 # Lock互斥锁会存在死锁问题,需要编码者注意 # RLock递归锁 # 互斥锁 # from threading import Lock # from ... 阅读全文
posted @ 2018-10-26 21:14 _小溢 阅读(1202) 评论(0) 推荐(0)
摘要:# 没有守护线程时,主线程会等待子线程的结束,子线程结束后,主线程才会结束 # import time # from threading import Thread # # # def func1(): # print(666) # time.sleep(10) # # def func2(): # pass # # if __name__ == '__main__':... 阅读全文
posted @ 2018-10-24 22:11 _小溢 阅读(131) 评论(0) 推荐(0)
摘要:import threading def wahaha(n): print(n, threading.current_thread()) # 1 threading.Thread(target=wahaha, args=(1,)).start() print(threading.current_thread()) # # 查看线程名和线程id的方法, print(th... 阅读全文
posted @ 2018-10-24 21:40 _小溢 阅读(116) 评论(0) 推荐(0)
摘要:1.server 2.client 阅读全文
posted @ 2018-10-24 21:39 _小溢 阅读(150) 评论(0) 推荐(0)
摘要:# Cpyrhon解释器下有个全局解释器锁-GIL:在同一 # 在同一时刻,多线程中只有一个线程访问CPU # 有了全局解释器锁(GIL)后,在同一时刻只能有一个线程访问CPU。 # 全局解释器锁锁的是线程,而不是数据。 # 这种全局解释器锁的特性就是同一时间只有有一个线程访问CPU,所以在多个CPU的情况下,也只有一个线程在一个时间点访问CPU,这是Cpytho... 阅读全文
posted @ 2018-10-24 21:39 _小溢 阅读(358) 评论(0) 推荐(0)
摘要:# python线程模块的选择 #python提供了几个用于多线程编程的模块,包括thread、threading和Queue等。 # thread和threading模块允许程序员创建和管理线程。 # thread模块提供了基本的线程和锁的而支持,threading提供了更高级别、功能更强的线程管理功能 # Queue模块允许用户创建一个... 阅读全文
posted @ 2018-10-23 22:28 _小溢 阅读(122) 评论(0) 推荐(0)
摘要:# 使用进程池的进程爬取网页内容,使用回调函数处理数据,用到了正则表达式和re模块 import re from urllib.request import urlopen from multiprocessing import Pool def get_page(url,pattern): response=urlopen(url).read().decode('utf-8') ... 阅读全文
posted @ 2018-10-23 21:20 _小溢 阅读(171) 评论(0) 推荐(0)
摘要:回调函数:一般应用在进程的任务有延时,而要处理的数据时间的很短时,将进程的任务和回调函数绑定起来,将任务获取到的数据返回给回调函数,由回调函数处理数据,回调函数是在主进程中得以执行的 阅读全文
posted @ 2018-10-23 21:00 _小溢 阅读(372) 评论(0) 推荐(0)
摘要:1.使用requsets出现这个错误,ImportError: No module named 'chardet' 原因:requests依赖其他一些模块 解决:依次使用pip安装即可 pip install certifi pip install chardet pip install idna 阅读全文
posted @ 2018-10-23 20:34 _小溢 阅读(15313) 评论(0) 推荐(1)
摘要:1.cmd上运行pip后,出现这个 Fatal error in launcher: Unable to create process using '"' 原因:计算机的环境变量中找不到python,找不到pip。肯定是之前装过很多个python版本造成的。 解决:path环境变量中python.e 阅读全文
posted @ 2018-10-23 20:19 _小溢 阅读(340) 评论(0) 推荐(0)
摘要:一般在爬虫中,用到回调函数比较多,并且是将访问网页、下载网页的过程放到子进程中去做,分析数据,处理数据让回调函数去做,因为访问网页与下载网页有网络延时,而处理数据只占用很小的时间 阅读全文
posted @ 2018-10-22 21:34 _小溢 阅读(423) 评论(0) 推荐(0)