范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

python中的进程实战部分

  如果想了解进程 可以先看一下这一篇 python中的进程-理论部分multiprocessing模块介绍
  python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程。Python提供了multiprocessing。
  multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。
   multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,提供了Process、Queue、Pipe、Lock等组件。
  需要再次强调的一点是:与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进程内。 Process类的介绍
  创建进程的类 : Process([group [, target [, name [, args [, kwargs]]]]]),由该类实例化得到的对象,表示一个子进程中的任务(尚未启动)  强调: 1. 需要使用关键字的方式来指定参数 2. args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号
  参数介绍:
  group参数未使用,值始终为None
  target表示调用对象,即子进程要执行的任务
  args表示调用对象的位置参数元组,args=(1,2,"tiga",)
  kwargs表示调用对象的字典,kwargs={"name":"tiga","age":18}
  name为子进程的名称
  方法介绍:
  p.start():启动进程,并调用该子进程中的p.run()
  p.run():进程启动时运行的方法,正是它去调用target指定的函数,我们自定义类的类中一定要实现该方法
  p.terminate():强制终止进程p,不会进行任何清理操作,如果p创建了子进程,该子进程就成了僵尸进程,使用该方法需要特别小心这种情况。如果p还保存了一个锁那么也将不会被释放,进而导致死锁
  p.is_alive():如果p仍然运行,返回True
  p.join([timeout]):主线程等待p终止(强调:是主线程处于等的状态,而p是处于运行的状态)。timeout是可选的超时时间,需要强调的是,p.join只能join住start开启的进程,而不能join住run开启的进程
  属性介绍: p.daemon:默认值为False,如果设为True,代表p为后台运行的守护进程,当p的父进程终止时,p也随之终止,并且设定为True后,p不能创建自己的新进程,必须在p.start()之前设置 p.name:进程的名称 p.pid:进程的pid p.exitcode:进程在运行时为None、如果为–N,表示被信号N结束(了解即可) p.authkey:进程的身份验证键,默认是由os.urandom()随机生成的32字符的字符串。这个键的用途是为涉及网络连接的底层进程间通信提供安全性,这类连接只有在具有相同的身份验证键时才能成功(了解即可)Process类的使用
  注意:在windows中Process()必须放到# if __name__ == "__main__":下 ince Windows has no fork, the multiprocessing module starts a new Python process and imports the calling module.  If Process() gets called upon import, then this sets off an infinite succession of new processes (or until your machine runs out of resources).  This is the reason for hiding calls to Process() inside  if __name__ == "__main__" since statements inside this if-statement will not get called upon import. 由于Windows没有fork,多处理模块启动一个新的Python进程并导入调用模块。  如果在导入时调用Process(),那么这将启动无限继承的新进程(或直到机器耗尽资源)。  这是隐藏对Process()内部调用的原,使用if __name__ == "__main __",这个if语句中的语句将不会在导入时被调用。
  创建并开启子进程的两种方式
  方法一:import time import random from multiprocessing import Process def piao(name):     print("%s piaoing" %name)     time.sleep(random.randrange(1,5))     print("%s piao end" %name)    p1=Process(target=piao,args=("egon",)) #必须加,号 p2=Process(target=piao,args=("alex",)) p3=Process(target=piao,args=("wupeqi",)) p4=Process(target=piao,args=("yuanhao",))  p1.start() p2.start() p3.start() p4.start() print("主线程")
  方法二:#开进程的方法二: import time import random from multiprocessing import Process   class Piao(Process):     def __init__(self,name):         super().__init__()         self.name=name     def run(self):         print("%s piaoing" %self.name)          time.sleep(random.randrange(1,5))         print("%s piao end" %self.name)  p1=Piao("xm") p2=Piao("xs") p3=Piao("xj") p4=Piao("xh")  p1.start() #start会自动调用run p2.start() p3.start() p4.start() print("主线程")Process对象的join方法
  join:主进程等,等待子进程结束from multiprocessing import Process import time import random  class Piao(Process):     def __init__(self,name):         self.name=name         super().__init__()     def run(self):         print("%s is piaoing" %self.name)         time.sleep(random.randrange(1,3))         print("%s is piao end" %self.name)   p=Piao("tiga") p.start() p.join(0.0001) #等待p停止,等0.0001秒就不再等了 print("开始")
  有了join,程序不就是串行了吗??? from multiprocessing import Process import time import random def piao(name):     print("%s is piaoing" %name)     time.sleep(random.randint(1,3))     print("%s is piao end" %name)  p1=Process(target=piao,args=("xm",)) p2=Process(target=piao,args=("xh",)) p3=Process(target=piao,args=("xj",)) p4=Process(target=piao,args=("xw",))  p1.start() p2.start() p3.start() p4.start()  #有的同学会有疑问:既然join是等待进程结束,那么我像下面这样写,进程不就又变成串行的了吗? #当然不是了,必须明确:p.join()是让谁等? #很明显p.join()是让主线程等待p的结束,卡住的是主线程而绝非进程p,  #详细解析如下: #进程只要start就会在开始运行了,所以p1-p4.start()时,系统中已经有四个并发的进程了 #而我们p1.join()是在等p1结束,没错p1只要不结束主线程就会一直卡在原地,这也是问题的关键 #join是让主线程等,而p1-p4仍然是并发执行的,p1.join的时候,其余p2,p3,p4仍然在运行,等#p1.join结束,可能p2,p3,p4早已经结束了,这样p2.join,p3.join.p4.join直接通过检测,无需等待 # 所以4个join花费的总时间仍然是耗费时间最长的那个进程运行的时间 p1.join() p2.join() p3.join() p4.join()  print("主线程")   #上述启动进程与join进程可以简写为 # p_l=[p1,p2,p3,p4] #  # for p in p_l: #     p.start() #  # for p in p_l: #     p.join()Process对象的其他方法或属性
  terminate与is_alivefrom multiprocessing import Process import time import random  class Piao(Process):     def __init__(self,name):         self.name=name         super().__init__()      def run(self):         print("%s is piaoing" %self.name)         time.sleep(random.randrange(1,5))         print("%s is piao end" %self.name)   p1=Piao("xm") p1.start()  p1.terminate()#关闭进程,不会立即关闭,所以is_alive立刻查看的结果可能还是存活 print(p1.is_alive()) #结果为True  print("开始") print(p1.is_alive()) #结果为False
  name与pidfrom multiprocessing import Process import time import random class Piao(Process):     def __init__(self,name):         # self.name=name         # super().__init__() #Process的__init__方法会执行self.name=Piao-1,         #                    #所以加到这里,会覆盖我们的self.name=name          #为我们开启的进程设置名字的做法         super().__init__()         self.name=name      def run(self):         print("%s is piaoing" %self.name)         time.sleep(random.randrange(1,3))         print("%s is piao end" %self.name)  p=Piao("egon") p.start() print("开始") print(p.pid) #查看pid

东北魔幻泳装小城,工人月入过万,承包全球40的泳衣我只管做泳衣,从没穿过。文郑亚文编辑范婷婷敏大妈57岁了,每天往质检台上一坐就是八九个小时。她左手持一把纱剪,右手拿着一件大红色的比基尼,咔嚓一下,比基尼缝合处多出来的皮筋,就落了防汛袋告急!厂家连夜赶制200万只,6车送往郑州灾区河南加油!文姜雪芬编辑范婷婷7月20日晚上,张欣的手机就没有停下过,他翻着通讯录,一个个打电话给河南老家的亲人朋友,确认他们平安。十多年前,河南商丘小伙张欣离开老家,来到山东临沂做95后奢侈品鉴定师我看过100万个包包,一半是假的小镇做题家的另类教案。文易琬玉编辑范婷婷2015年,彭浩峰19岁,在网上开了一家奢侈品包包鉴定的店铺,通过标牌logo五金刻印拉链油边等细节图,鉴定奢侈品的真伪。起初,他免费帮人鉴西安巷子里的糕点铺,背后藏着盛唐记忆,日产4000公斤不够卖清真是向内的约束,不是向外的标签。文易琬玉编辑范婷婷在老一辈西安人的记忆里,光明巷39号铺子的点心深入人心。老板贾保全原本是国营餐饮集团的员工,改革开放后出来单干,从一辆推车走街串顶级捏脸师靠捏刘亦菲,月入10万容貌焦虑不分现实虚拟。文张从容编辑范婷婷燕尾是个大三女生,读了一个男女比例19的专业,平时寝室教室两点一线,长得普普通通,挤不进恋爱的赛道。但是在游戏世界里,她有一张酷似刘亦菲的脸征服欧洲日本玩家,中国又一个品类出海了神秘昏暗的古宅里,八角灯笼忽明忽暗,四处散落着古书和瓷器,雕花木门吱呀作响,好像下一秒钟,被封印的纸人就会从你身后飘过来。这个名为古宅心跳的鬼屋,是今年造物节现场人气颇高的展厅,门中国深山画娘惊艳世界,画蜡染炸翻国际时尚,从没赚这么多钱2009年11月,贵州苗族丹寨里来了一位陌生女子,她走村串寨,跟几十个蜡染画娘重复着一句话你们可以走出这里。从未出过大山的画娘们,无一例外全部拒绝了她我们不认识字,没有办法赚钱,万iOS14。7Beta5版本发布!经常使用WiFi的用户,请务必升级近日,苹果一如既往在凌晨推送了更新版本,只不过这次推送的并不是最新的iOS15测试版,而是iOS14。7Beta5版本。关于iOS14。7Beta51固件包版本号与大小此次发布的iiOS15首个测试版和Beta2版本一同发布,该升级哪一个?近日,苹果同时发布了iOS15第一个公测版本PublicBeta2以及第二个开发者版本Beta2,敢于尝鲜的果粉一时间不知道该如何升级哪一个版本。下面就各个版本的更新情况作出说明i性价比产品怎么刺激新消费?百货小二教你怎么攻略双11家居百货的双11干货来了!文易琬玉编辑范婷婷每到双11,囤日用百货,已经成为消费者的基本动作。今年天猫双11依旧是双节棍,分为11月13日和11月11日两个阶段售卖,并将在10月2全网最暖最严格的食品店铺,所有产品都只要1分钱来自食物的平凡幸福,每个人都值得拥有。文易琬玉编辑范婷婷临近中午,红红来不及脱下工服,就叫上工友们,来到了上海浦东新区峨山路的绿洲食物银行门口。这里正在大排长龙,红红仔细一看,大部
免费好用的全平台编辑器,手把手教你做一个Markdown这门简洁的标记语言,让我们写文章有了更方便的途径。macOS上面好用又好看的Markdown编辑器百花齐放,但在Windows上,好用的Markdown编辑器真是少欧洲央行行长加密货币毫无价值应受到监管据彭博社网站5月21日报道,欧洲央行行长克里斯蒂娜拉加德说,加密货币是空中楼阁,应该受到监管,以引导人们避免用毕生积蓄进行投机。报道称,拉加德对荷兰电视台说,她担心有些人不了解风险荣耀70系列已经确定于5月30号发布了荣耀70系列已经确定将于5月30日正式发布了,在网上提前曝光了一组该机四款配色的渲染图,同时呢还有网友晒出了该机的实拍图,整体来说呢,荣耀麒麟标准版支行将提供亮黑,流光水晶,墨玉金一加Nord2T欧洲发布搭载天玑1300处理器,支持80W快充IT之家5月22日消息,近日一加在欧洲正式推出了Nord2T新机,该机是去年中端产品Nord2的后续产品。与前代产品相比,一加Nord2T升级并不大,几乎所有配置和基本设计都得到了TWS颠覆造型设计,earsopen骨聆骨传导蓝牙耳机骨传导耳机虽然近几年渐被消费者熟知,但骨传导概念依然属于小众圈。从原理上来说,骨传导耳机是将音源信号转换为机械振动,再通过耳机与人体骨骼接触面进行振动来传递声音。不少人认为挂耳式骨满大街自动驾驶,为什么还要升级LCC?这几年全球汽车产业经历了颠覆性的风云变幻,你和我都有幸见证历史书写的过程。自从特斯拉用过硬的综合产品力营销和服务力超越大众丰田等汽车大厂,成为市值冠军之后,同时特斯拉也带货了不少启山东人一图导航采样点!全省核酸检测地图上线日前,山东省大数据局联合百度地图腾讯地图推出的全省核酸采样机构电子地图功能上线,切实满足群众核酸检测愿检尽检需求。有哪些核酸检测点?最近的核酸检测点在哪找?几点能去做核酸?是开展核(科技)以色列团队用植物蛋白支架3D打印培养肉新华社耶路撒冷4月18日电(记者王卓伦吕迎旭)以色列研究人员近期在国际期刊生物材料杂志上报告了可用于培养肉制造的富含植物蛋白的支架材料,新研究有望推进培养肉工业化规模生产。培养肉产4企业数字化变革的路径是什么?先说答案客户体验提升,进而提升运营流程效率,再到商业模式优化。根据多年咨询服务经验,建议从某个相对独立的业务部门,单点实验局部推广,取得一定成效之后,进行扩展复制,进而再优化创新。华为余承东5月汽车手机企业或将全面停产近日,华为常务董事消费者BGCEO智能汽车解决方案BUCEO余承东在个人微信朋友圈表示,如果上海不能复工复产,5月之后所有科技工业产业涉及上海供应链的,都会全面停产,尤其汽车产业!新规实施超半年网络游戏仍存乱象专家解读哪些漏洞需要堵?央广网北京4月18日消息(记者王逸群)据中央广播电视总台中国之声新闻纵横报道,去年8月,国家新闻出版署发布通知,要求进一步严格管理,切实防止未成年人沉迷网络游戏。记者调查显示,我国