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

wordpress 千万数据莱芜seo推广

wordpress 千万数据,莱芜seo推广,网站制作公司茂名,北京餐饮设计公司哪家好一、数据共享 from multiprocessing import Manager 把所有实现了数据共享的比较便捷的类都重新又封装了一遍#xff0c;并且在原有的multiprocessing基础上增加了新的机制list、dict 机制#xff1a;支持的数据类型非常有限 list、dict都不是数据安全的#xff0c;需要自己…一、数据共享   from multiprocessing import Manager   把所有实现了数据共享的比较便捷的类都重新又封装了一遍并且在原有的multiprocessing基础上增加了新的机制list、dict   机制支持的数据类型非常有限     list、dict都不是数据安全的需要自己加锁来保证数据安全 from multiprocessing import Manager,Process,Lockdef work(d,lock):with lock:d[count] - 1if __name__ __main__:lock Lock()with Manager() as m: # m Manager()dic m.dict({count:100})p_lst []for i in range(10):p Process(targetwork, args(dic, lock))p_lst.append(p)p.start()for p in p_lst:p.join()print(dic) #{count: 90} with ......一大段语句 dis模块 python的上下文管理 在执行一大段语句之前自动做某个操作 open 在执行一大段语句之后自动做某个操作 close面向对象的魔术方法双下杠杠方法 # 回调函数 in Poolimport os from multiprocessing import Pooldef func(i):print(第一个任务, os.getpid())return **idef call_back(res): #回调函数print(回调函数, os.getpid())print(res---, res)if __name__ __main__:p Pool()print(主进程, os.getpid())p.apply_async(func, args(1,), callbackcall_back)p.close()p.join()   func执行完毕之后执行callback函数   func的返回值会作为callback的参数   回调函数是在主进程中实现的   应用场景子进程有大量运算要做回调函数等待结果做简单处理 import re from urllib.request import urlopen from multiprocessing import Poolurl_lst [http://www.baidu.com,http://www.sohu.com,http://www.sogou.com,http://www.4399.com,http://www.cnblogs.com, ]def get_url(url):response urlopen(url)ret re.search(www\.(.*?)\.com, url)print(%s finished % ret.group(1))return ret.group(1),response.read()def call(content):url,con contentwith open(url.html, wb)as f:f.write(con) if __name__ __main__:p Pool()for url in url_lst:p.apply_async(get_url,args(url,),callbackcall)p.close()p.join() 子进程去访问网页主进程处理网页的结果   二、线程理论基础   进程是计算机中最小的资源分配单位进程对于操作系统来说还具有一定的负担   创建一个进程操作系统分配的资源大约有代码数据文件等 1、为什么要有线程   线程是轻量级的概念他没有属于自己的进程资源一条线程只负责执行代码没有自己独立的代码、数据以及文件   线程是计算机中能被CPU调用的最小的单位当前大部分计算机中的CPU都是执行的线程中的代码   线程与进程之间的关系每一个进程中都至少有一条线程在工作 线程的特点   同一个进程中的所有线程的资源是共享的   轻量级 没有自己的资源 进程与线程之间的区别       占用的资源、调度的效率、资源是否共享 线程的并行问题   线程可以并行java、cc#等   在cpython中一个进程中的多个线程是不可以并行的   原因是Cpython解释器内部有一把全局解释器锁GIL所以线程不能充分利用多核同一时刻同一进程中的线程只有一个能被cpu执行   GIL锁确实是限制了你程序的效率但目前可以帮助你提高线程之间切换的效率   如果是想写高计算型的就要多进程或者换一个解释器 2、threading 模块 # 并发import os from threading import Threaddef func(i):print(子线程, i, os.getpid())print(主线程, os.getpid()) for i in range(10):t Thread(targetfunc, args(i,))t.start() # 进程和线程的差距import os import time from threading import Thread from multiprocessing import Processdef func(i):print(子, os.getpid())if __name__ __main__:start time.time()t_lst []for i in range(100):t Thread(targetfunc, args(i,))t.start()t_lst.append(t)for t in t_lst:t.join()end time.time()-startstart time.time()t_lst []for i in range(100):p Process(targetfunc, args(i,))p.start()t_lst.append(p)for p in t_lst:p.join()end2 time.time()-startprint(end, end2) #0.0279843807220459 13.582834720611572 # 线程间的数据共享from threading import Threadnum 100 def func():global numnum - 1 #每个线程都-1t_lst [] for i in range(100):t Thread(targetfunc) #创建一百个线程t.start()t_lst.append(t) for t in t_lst:t.join() print(num) #0  Thread 类的其他用法 Thread实例对象的方法# isAlive(): 返回线程是否活动的。# getName(): 返回线程名。# setName(): 设置线程名。threading模块提供的一些方法# threading.currentThread(): 返回当前的线程变量。# threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前不包括启动前和终止后的线程。# threading.activeCount(): 返回正在运行的线程数量与len(threading.enumerate())有相同的结果。 from threading import currentThread,Thread def func():time.sleep(2)t Thread(targetfunc) t.start() print(t.is_alive()) #True判断线程是否活着 print(t.getName()) #Tread-1 t.setName(tt) print(t.getName()) #tt改名字def func():print(子线程, currentThread().ident)time.sleep(2) print(主线程,currentThread().ident) t Thread(targetfunc) t.start() #currentThread().ident返回线程的pidfrom threading import enumerate def func():print(子进程, currentThread().ident)time.sleep(2)print(主进程, currentThread().ident) for i in range(10):t Thread(targetfunc)t.start() print(len(enumerate())) #enumerate()返回一个包含正在运行的线程的listlen(list)from threading import activeCount def func():print(子线程, currentThread().ident)time.sleep(2)print(主线程, currentThread().ident) for i in range(10):t Thread(targetfunc)t.start() print(activeCount()) #activeCount()返回正在运行的线程数量与len(threading.enumerate())有相同的结果 示例 3、守护线程 import time from threading import Threaddef func():while True:time.sleep(1)print(123)def func2():print(func2 start)time.sleep(3)print(func2 end)t1 Thread(targetfunc) t2 Thread(targetfunc2) t1.setDaemon(True) t1.start() t2.start() print(主线程代码结束) # func2 start #主线程代码结束 #123 #123 #func2 end     守护线程 是在主线程代码结束之后再等待子线程执行结束后才结束   主线程结束  就意味着主进程结束   主线程等待所有的线程结束   主线程结束了以后  守护线程会随着主进程的结束而随之结束  不是随着代码的结束而结束    ################################################################################# 线程线程和进程之间的关系 每个进程内都有一个线程 线程是不能独立存在的线程和进程之间的区别 同一个进程中线程之间的数据是共享的 进程之间的数据是隔离的 线程是被cpu执行的最小单位 操作系统调度 进程是计算机中最小的资源分配单位python GIL锁 全局解释器锁 全局锁 cpython解释器中的 锁线程 同一时刻同一个进程只会有一个线程访问CPU 锁的是线程而不是数据 当程序是高IO型的 多线程 当程序是高计算(CPU)型的 多进程 cpu*1 ~ cpu*2threadingThread 守护线程 主线程结束之后才结束socket_server IO多路复用 多线程框架 并发的效果 多线程、协程的概念 flask爬虫 线程池 协程set、dict、list生成器面向对象的进阶 魔术方法管道socket_server的源码 转载于:https://www.cnblogs.com/yzh2857/p/9699875.html
http://www.huolong8.cn/news/479109/

相关文章:

  • 单页面网站制作微信小程序订单系统
  • 电商网站开发流程河北地图
  • 房地产公司网站模板成都网站建设思乐科技
  • 网页设计创建站点教程工信部网站备案平台
  • 企业注册在哪个网站申请汕头服饰网站建设
  • 建一个网站一般要多少钱网站正在建设 下载
  • 网站引入百度地图中国建设网官方网站
  • 做期货看资讯什么网站好微网站 底部导航菜单
  • 一款非常不错的seo网站优化公司源码物流公司简介模板
  • 个人网站可以做推广吗苏州建站方法
  • 网站seo策划方案正能量网站下载
  • 中华建设网算什么级别网站微网站开发难吗
  • 专业制作彩铃网站建设网站要准备什么
  • 烟台网站建设多少钱视频推广方式
  • 做 在线观看免费网站郑州做网站加密的公司
  • 建设单位网站经费请示网站开发 弹窗
  • 如何上传ftp网站程序网站开发工作描述
  • 河南省城乡建设信息网南京谷歌优化
  • 网站建设的优势与不足淘宝关键词排名怎么查
  • 做网站都用什么工具宁波网站设计公司有几家
  • 做网站需要源码吗移动端网站建设的好处
  • 广告公司做的网站图片侵权企业营销网站的建设
  • 深圳网站见做网站怎么购买主机
  • 商城网站规划泉州网站公司建站
  • 杭州认证网站建设wordpress菜单栏菜单简介
  • 温州多语言网站建设泉州惠安网站建设
  • 各行各业网站建设网站备案密码重置
  • 网站的主机选择wordpress多站模式
  • 凡科怎么做网站秦皇岛市网站建设
  • 嘉兴品牌网站设计如何构建一个网站