目录
怎样选择多线程Thread、多进程Process、多协程Coroutine
1.有了多线程threading,为什么还要用多进程multiprocessing
使用subprocess启动电脑任意程序听歌、解压缩、自动下载等等
Python并发编程简介
1.为什么要引入并发编程?
场景1:一个网络爬虫,按顺序爬取了1小时,采用并发下载减少到20分钟!
场景2:一个APP应用,优化前每次打开页面需要3秒钟,采用异步并发提升到每次200毫秒;
2.有哪些程序提速的方法?
3.python对并发编程的支持
怎样选择多线程Thread、多进程Process、多协程Coroutine
1.什么是CPU密集型计算、IO密集型计算?
2.多线程、多进程、多协程的对比
3.怎样根据任务选择对应技术?
Python速度慢的罪魁祸首,全局解释器锁GIL
1.python速度慢的两大原因
2.GIL是什么?
3.为什么有GIL这个东西?
4.怎样规避GIL带来的限制?
使用多线程,Python多线程被加速10倍
1.Python创建多线程的方法
2.改写爬虫程序,编程多线程爬取
blog_spider.py
import requests
urls=[f"https://www.cnblogs.com/#p{page}"
for page in range(1,50+1)
]
def craw(url):
r=requests.get(url)
print(url,len(r.text))
craw(urls[0])
multi_thread_craw.py
import blog_spider
import threading
import time
def single_thread():
print("single_thread begin")
for url in blog_spider.urls:
blog_spider.craw(url)
print("single_thread end")
def multi_thread():
print("single_thread begin")
threads=[]
for url in blog_spider.urls:
threads.append(
threading.Thread(target=blog_spider.craw,args=(url,))
)
for thread in threads:
thread.start()
for thread in threads:
thread.join()
print("single_thread end")
if __name__=='__main__':
start=time.time()
single_thread()
end=time.time()
print("single thread cost:",end-start)
start = time.time()
multi_thread()
end = time.time()
print("multi thread cost:", end - start)