一篇文章带你解析Python进程.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一篇文章带你解析Python进程 进程,一个新颖的字眼,可能有些人并不了解,它是系统某个运转程序的载体,这个程序可以有单个或者多个进程,一般来说,进程是通过系统CPU 内核数来安排并设置的,我们可以来看下系统中的进程: 可以看到,360扫瞄器是真的皮,这么多进程啊,当然可以这样来格外清楚的看进程线程使用情况: 通过任务管理器中的资源监视器,是不是很厉害了,哈哈哈。讲完了这些,再说说用法。 1.基本用法 进程能干什么,这是我们要深思熟虑的事情。我们都晓得一个程序运转会创建进程,所以程序在创建这些进程的时候,为了让它们更能有条不紊的工作,确定也加入了线程。 那么一条进程里面就会有多个线程协同作战,但是进程不行以创建过多,不然会消耗资源,除非你开发的是一个大型的系统。那么,我们现在就来创建一个进程吧。 一、创建进程 1.在创建进程之前,我们先导入进程的模块,代码如下: import multiprocess as m m.Process(target,args) 其实这种写法是不对的,就好比bs4中的BeautifulSoup,你想通过先导入bs4,然后再引入BeautifulSoup是行不通的,必需这样: from multiprocessing import Process Process(group, target, args, kwargs, name) group:用户组 target:调用函数 args:参数元祖 kwargs:参数字典 name:子进程名称 可以看出进程和线程的用法基本差不多,只是名称功能不同而已。而且还有很多其它优秀的方法: # 前往当前进程存活的子进程的列表。调用该方法有“等待”已经结束的进程的副作用。 multiprocessing.active_children() # 前往系统的CPU数量。 multiprocessing.cpu_count() 2.创建单个进程 由上述参数可知函数的前往值,基本与线程无差异化。 #启动进程,调用进程中的run()方法。 start() #进程活动的方法 run() #强制终止进程,不会进行任何清理操作。假如终止前创建了子进程,那么该子进程在其强制结束后变为僵尸进程;假如该进程还保存了一个锁,那么也将不会被释放,进而导致死锁。 terminate() #推断某进程能否存活,存活前往True,否则False。 is_alive() 主线程等待子线程终止。timeout为可选择超时时间;需要强调的是:p.join只能join住start开启的进程,而不能join住run开启的进程。 join([timeout]) #设置进程为后台守护进程;当该进程的父进程终止时,该进程也随之终止,并且该进程不能创建子进程,设置该属性必需在start()之前 daemon #进程名称。 name #进程pid,在start后才能产生 pid #子进程的退出代码。假如进程尚未终止,这将是 None,负值-N表示子进程被信号N终止。 exitcode #进程身份验证,默认是os.urandom()随机生成的字符串。校验网进程连接能否正确 authkey #系统对象的数字句柄,当进程结束时将变为 ready 。 sentinel #宰进程 kill() #关闭进程 close() 请留意:创建进程务必将它加入如下语句中: if __name__ == __main__: 这样就实现了我们的一个关于进程的程序了。另外我们也可以通过承继进程类来实现: 可以说我们每创建一个进程它就会有一个ID来标志它,下面情况: 3.创建多个进程 单个进程往往都是不够用的,全部我们需要创建一个多进程,多进程创建方法也很简约,加一层循环即可: 这样就轻松创建了多进程的任务,速度比以往就要更快了。 4.进程池 进程池的设计之初就是为了便利我们更有效的利用资源,避开铺张,假如任务量大就多个核一起帮忙,假如少就只开一两个核,下面我们来看看实现过程: 首先导入包: from multiprocessing import Pool import multiprocessing as m 进程池的安装包为Pool,然后我们来看下它的CPU内核数: num=m.cpu_count()#CPU内核数 紧接着我们在来创建进程池: pool=multiprocessing.Pool(num) 进程池中也有很多方法供我们使用: apply(func,args,kwargs) 同步执行(串行) 堵塞 apply_async(func,args,kwargs) 异步执行(并行) 非堵塞 terminate() 强制终止进程,不在处理未完成的任务。 join()

文档评论(0)

bob157641554 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档