当前位置: 首页 > news >正文

做短连接的网站网站想做个链接怎么做

做短连接的网站,网站想做个链接怎么做,端午节网站建设,wordpress 纯文字主题多线程与多进程 一, 什么是进程, 什么是线程? ​ 进程: 运行中的程序. 每次我们执行一个程序, 咱们的操作系统对自动的为这个程序准备一些必要的资源(例如, 分配内存, 创建一个能够执行的线程. ) ​ 线程: 程序内, 可以直接被CPU调度的执行过程. 是操作系统能够进行运算调度…多线程与多进程 一, 什么是进程, 什么是线程? ​ 进程: 运行中的程序. 每次我们执行一个程序, 咱们的操作系统对自动的为这个程序准备一些必要的资源(例如, 分配内存, 创建一个能够执行的线程. ) ​ 线程: 程序内, 可以直接被CPU调度的执行过程. 是操作系统能够进行运算调度的最小单位. 它被包含在进程之中, 是进程中的实际运作单位. ​ 进程与线程之间的关系: ​ 进程是资源单位. 线程是执行单位. 就好比是一家公司. 一家公司的资源就是桌椅板凳, 电脑饮水机这些资源, 但是, 我们如果说一家公司正在运转着, 运行着. 那里面必须要有能为这家公司工作的人. 程序里面也一样, 进程就是为了程序运行而需要的各种资源. 但是程序想要运行, 就必须由线程来被CPU调度执行. ​ 我们运行的每一个程序默认都会有一个线程. 哪怕是只有helloworld级别的程序. 想要执行. 也会有一个线程产生. 二, 多线程 ​ 顾名思义, 多线程就是让程序产生多个线程一起去执行. 还拿公司举例子. 一家公司里如果只有一个员工, 工作效率肯定不会高到哪里去. 怎么提高效率? 多招点儿人就OK了. ​ 如何实现多线程, 在python中, 有两种方案实现多线程. 1. 直接用Thread创建线程 我们先看看单线程的效果 def func():for i in range(1000):print(func, i)if __name__ __main__:func()for i in range(1000):print(main, i) 再看多线程 from threading import Threaddef func():for i in range(1000):print(func, i)if __name__ __main__:t Thread(targetfunc)t.start()for i in range(1000):print(main, i)2. 继承Thread类 from threading import Threadclass MyThread(Thread):def run(self):for i in range(1000):print(func, i)if __name__ __main__:t MyThread()t.start()for i in range(1000):print(main, i)以上两种是最基本的python创建多线程的方案. python还提供了线程池 3. 线程池 python还提供了线程池功能. 可以一次性的创建多个线程, 并且, 不需要我们程序员手动去维护. 一切都交给线程池来自动管理. # 线程池 def fn(name):for i in range(1000):print(name, i)if __name__ __main__:with ThreadPoolExecutor(10) as t:for i in range(100):t.submit(fn, namef线程{i}) 如果任务有返回值怎么办? def func(name):time.sleep(2)return namedef do_callback(res):print(res.result())if __name__ __main__:with ThreadPoolExecutor(10) as t:names [线程1, 线程2, 线程3]for name in names:# 方案一, 添加回调t.submit(func, name).add_done_callback(do_callback)if __name__ __main__:start time.time()with ThreadPoolExecutor(10) as t:names [5, 2, 3]# 方案二, 直接用map进行任务分发. 最后统一返回结果results t.map(func, names, ) # 结果是按照你传递的顺序来执行的, 代价就是如果第一个没结束. 后面就都没结果for r in results:print(result, r)print(time.time() - start)4. 多线程在爬虫中的应用 http://www.xinfadi.com.cn/marketanalysis/0/list/1.shtml 依然用新发地这个案例. import requests from lxml import etree from concurrent.futures import ThreadPoolExecutordef get_page_source(url):resp requests.get(url)return resp.textdef get_totle_count():url http://www.xinfadi.com.cn/marketanalysis/0/list/1.shtmlsource get_page_source(url)tree etree.HTML(source)last_href tree.xpath(//div[classmanu]/a[last()]/href)[0]totle last_href.split(/)[-1].split(.)[0]return int(totle)def download_content(url):source get_page_source(url)tree etree.HTML(source)trs tree.xpath(//table[classhq_table]/tr[position() 1])result []for tr in trs:tds tr.xpath(./td/text())result.append((tds[0], tds[1], tds[2], tds[3], tds[4], tds[5], tds[6]))return resultdef main():f open(data.csv, modew)totle get_totle_count()url_tpl http://www.xinfadi.com.cn/marketanalysis/0/list/{}.shtmlwith ThreadPoolExecutor(50) as t:data t.map(download_content, (url_tpl.format(i) for i in range(1, totle1)))# 拿到所有任务的返回for item in data:# 每个任务的数据循环出一行for detial in item:# 写入文件content ,.join(detial) \nprint(content)f.write(content)if __name__ __main__:main()三, 多进程 一个公司能创造的价值毕竟是有限的. 怎么办? 开分公司啊. 此所谓多进程. python实现多进程的方案和多线程几乎一样. 非常的简单 ###1. 直接用Process创建进程 def func():for i in range(1000):print(func, i)if __name__ __main__:p Process(targetfunc)p.start()for i in range(1000):print(main, i)2. 继承Process类 class MyProcess(Process):def run(self):for i in range(1000):print(MyProcess, i)if __name__ __main__:t MyProcess()t.start()for i in range(1000):print(main, i)###3.多进程在爬虫中的应用 ​ 我们一般很少直接使用多进程. 最适合使用多进程的情况是: 多个任务需要一起执行. 并且互相之间数据可能有交汇但功能相对独立.比如, 我们自己做一个代理IP池, 就需要从网络上进行抓取, 抓取得到的IP要进行校验才可以进行使用. 此时, 抓取任务和校验任务就相当于完全独立的两个功能. 此时就可以启动多个进程来实现. 再比如, 如果遇到图片抓取的时候, 我们知道图片在一般都在网页的img标签中src属性存放的是图片的下载地址. 此时我们可以采用多进程的方案来实现, 一个负责疯狂扫图片下载地址. 另一个进程只负责下载图片. ​ 综上, 多个任务需要并行执行, 但是任务之间相对独立(不一定完全独立). 可以考虑用多进程. # 进程1. 从图片网站中提取到图片的下载路径 def get_pic_src(q):print(start main page spider)url http://www.591mm.com/mntt/resp requests.get(url)tree etree.HTML(resp.text)child_hrefs tree.xpath(//div[classMeinvTuPianBox]/ul/li/a/href)print(get hrefs from main page, child_hrefs)for href in child_hrefs:href parse.urljoin(url, href)print(handle href, href)resp_child requests.get(href)tree etree.HTML(resp_child.text)pic_src tree.xpath(//div[idpicBody]//img/src)[0]print(fput {pic_src} to the queue)q.put(pic_src)# 作业, 分页图片抓取# print(ready to another!)# others tree.xpath(//ul[classarticleV2Page])# if others:# 进程2. 从图片网站中提取到图片的下载路径 def download(url):print(start download, url)name url.split(/)[-1]resp requests.get(url)with open(name, modewb) as f:f.write(resp.content)resp.close()print(downloaded, url)def start_download(q):with ThreadPoolExecutor(20) as t:while True:t.submit(download, q.get()) # 启动def main():q Queue()p1 Process(targetstart_download, args(q,))p2 Process(targetget_pic_src, args(q,))p1.start()p2.start()if __name__ __main__:main()
http://www.zqtcl.cn/news/940667/

相关文章:

  • 重庆建站模板大全给公司创建网站
  • king cms网站建设上海传媒公司有哪些
  • 优时代网站建设网站建设哪家公司最好
  • 做网站有多难平面设计学徒要学多久
  • 包装网站模板做西式快餐店网站
  • 泉州制作网站软件九歌人工智能诗歌写作网站
  • wordpress安装时失败网站后台seo设置
  • 顺企网吉安网站建设网站设计师岗位职责
  • 佛山市品牌网站建设价格网站设计模板免费
  • 澧县网站建设常用的oa系统办公软件
  • 江门网站推广哪里专业网站显示百度地图
  • 上海微网站网站的营销推广方案及预算
  • 灌南住房建设局网站南京网站开发南京乐识好
  • 万网网站建设步骤公司建设网站能提升什么竞争力
  • 门户网站 页面集成防内涵吧网站源码
  • 二手房发布网站怎么做有哪个网站有免费视频素材
  • 张浦专业做网站纯html5网站
  • qq互联 网站开发北京博洛尼装饰公司
  • 企业网站模板建站广州红盾信息门户网站
  • 做网站都用到哪些软件商品网站建设方案
  • 集美区网站建设下面软件是网页制作平台的是( )
  • 中国建设银行纪念币预约网站做盗版影视网站
  • 网站建设工作年报江苏城乡和住房建设厅网站
  • 免费做网站tk地方门户网站推广方法有那些
  • 查企业年报的网站微商网站如何做
  • 做网站要了解的事情网站地图有什么作用
  • 企业网站asp源码怎么注册公司logo
  • 一个域名能同时做2个网站吗网站建设与维护的认识
  • 微信公众号怎么做网站链接ftp网站服务器
  • 免费舆情信息网站hao123主页