网站大量收购独家精品文档,联系QQ:2885784924

《大数据的Python基础》课件_第12章 并发编程.pptx

《大数据的Python基础》课件_第12章 并发编程.pptx

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第12章并发编程

学习目标掌握进程的执行、同步与数据交换掌握线程的创建与同步方法深入了解协程的概念和使用方法22025/3/6

12.1进程进程是操作系统中正在执行程序的实例,具有独立的地址空间,保存了执行指令、变量、动态分配的内存以及堆栈数据空间等。32025/3/6

12.1.1进程的执行传统的批处理系统采用串行的方式执行程序,一个任务执行完了再启动下一个任务。并发执行的操作系统允许多个任务同时执行,如果涉及CPU占用等受限资源的使用,会使用调度算法实现多任务之间的共享。在Python程序启动后,会默认产生一个进程作为主进程,若在程序中启动一个进程,事实是启动了当前进程的子进程。子进程采用start()方法启动执行,而其执行是否结束可以由join()方法来确定,子进程join()方法一旦被执行,会确保该进程一定执行完成后才能执行后续的指令。42025/3/6

【例12-1】子进程的启动和执行importmultiprocessingasmpimportosimporttimex=100deftask(msg): print(intask,子进程runing) print(intask,modulename:,__name__) print(intask,msg) globalx x=10 time.sleep(2)print(intask,parentprocess:,os.getppid()) #查看父进程IDprint(intask,processid:,os.getpid()) #查看当前进程IDprint(intask,x=,x)52025/3/6if__name__==__main__: p=mp.Process(target=task,args=(MySubProcess,)) p.start() p.join() #等待子进程执行完毕 print(x=,x) print(parentprocess:,os.getppid())#查看父进程ID print(processid:,os.getpid()) #查看当前进程ID

【例12-1】子进程的启动和执行对于进程的执行不能在IDLE环境中进行,否则无法准确观察结果。以上的程序需要在命令行中执行,如图所示。在一个程序中,若同时存在多个任务,可以利用进程池并发执行各个任务。62025/3/6

【例12-2】利用进程池执行多个序列元素的乘积importmultiprocessingasmpimportosfromfunctoolsimportreducedeff(lst): print(name={}ppid={}pid={}.format(mp.current_process().name, os.getppid(),os.getpid())) return(reduce(lambdax,y:x*y,lst))if__name__==__main__: x=[list(range(x,x+9))forxinrange(1,100,10)] #list(range(1,9)),list(range(10,19))… withmp.Pool(os.cpu_count())asp: print(p.map(f,x))72025/3/6

【例12-2】利用进程池执行多个序列元素的乘积 程序执行结果中的计算结果唯一,但结果中参与计算的进程信息每次运行会出现不同的信息,由于x中总共有10个元素,因此其打印的数量为10个记录。 根据进程号可以看出,当前有三个子进程4152、4896、6600,一个父进程9496,最后10组列表各自元素的累积则放在一个列表中打印出来:82025/3/6

【例12-2】利用进程池执行多个序列元素的乘积92025/3/6name=SpawnPoolWorker-1ppid=9496pid=4152name=SpawnPoolWorker-1ppid=9496pid=4152name=SpawnPoolWorker-1ppid=9496pid=4152name=SpawnPoolWorker-1ppid=9496pid=4152name=SpawnPoolWorker-1ppid=9496pid=4152name=SpawnPoolWorker-1ppid=9496pid=4152name=SpawnPoolWorker-1ppid=9496pid=4152name=SpawnPoolWorker-2

文档评论(0)

酱酱 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档