欢迎来到天天文库
浏览记录
ID:32368870
大小:648.24 KB
页数:23页
时间:2019-02-03
《python 编程之博望3把火-1》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、python编程之博望3把火-进程、线程raymond2014-04大纲上回习题讲解进程及线程简介Python多进程Python多线程习题Q&A习题-1pythonfileA.py的输出fileA.py:fileB.py:importfileBimportfileAname=1name=2print11,nameprint22,name多个模块间如何传输内存数据?习题-2计算一个文本文件(.txt)的行数,字符数,写到res.txt中,格式为1行:filename:linecount,charactercoun
2、t计算一个目录下所有文本文件的行数,字符数,写到res.txt中–提示:1、使用os模块进行目录遍历–2、需要考虑子目录情况附加题:请设计用例测试上述程序进程-1什么是进程?(process)–程序的一个运行实例–进程是操作系统分配资源的最小单元–由代码(堆栈段),数据(数据段)和进程控制块构成进程的状态及优先级–new, ready, run, block, dead –nice(linux)父子进程–fork –exec#include#include#include3、ng.h>#include#include#include#includeintglob=6;//heapintmain(void){intvar;//stackpid_tpid;beforeforkvar=88;pid=430,glob=7,var=89pid=429,glob=6,var=88printf("beforefork");/*wedon'tflushstdout*/if((pid=fork())<0){err_sys("f4、orkerror");}elseif(pid==0){/*child*/glob++;/*modifyvariables*/var++;}else{sleep(2);/*parent*/}printf(“pid=%d,glob=%d,var=%d”,getpid(),glob,var);exit(0);}进程-2进程间通信方式–文件–管道–socket–信号–信号量–共享内存线程的状态及优先级–new, ready, run, block, dead 线程-1什么是线程?(thread)–线程是操作系统任务调度的最小单5、元,一个进程可以包含多个线程,至少需要一个主线程–由线程ID,程序计数器,寄存器和栈构成–共享代码段,数据段等进程的状态及优先级–new, ready, run, block, dead 主进程进程、线程区别地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信,但需通过线程同步和互斥来保证数据的一致性。调度和切换:线程上下文切换比进程上下文切换要快得多。比喻Python中的进程ossubprocessprocessi6、ngmultiprocessingPython中的进程-osforksystemimportosos.fork()os.system('pwd')subprocess执行一个命令获得返回值importsubprocessreturnCode=subprocess.call(‘ls-l')printreturnCode执行一个命令获得标准输出importsubprocessp=subprocess.Popen(“ls-l",stdin=subprocess.PIPE,/stdout=subprocess.PIPE,std7、err=subprocess.PIPE,shell=True)p.wait()printp.returnCode,p.stdout.read()multiprocessing多进程并发linux版本importtimefrommultiprocessingimportPooldefrun(fn):time.sleep(2)printfntestFL=[1,2,3,4,5]pool=Pool(10)pool.map(run,testFL)pool.close()pool.join()multiprocessing多进程并发wi8、ndows版本importtimefrommultiprocessingimportPooldefrun(fn):time.sleep(2)printfnif__name__=="__main__":testFL=[1,2,3,4,5]pool=Pool(10)
3、ng.h>#include#include#include#includeintglob=6;//heapintmain(void){intvar;//stackpid_tpid;beforeforkvar=88;pid=430,glob=7,var=89pid=429,glob=6,var=88printf("beforefork");/*wedon'tflushstdout*/if((pid=fork())<0){err_sys("f
4、orkerror");}elseif(pid==0){/*child*/glob++;/*modifyvariables*/var++;}else{sleep(2);/*parent*/}printf(“pid=%d,glob=%d,var=%d”,getpid(),glob,var);exit(0);}进程-2进程间通信方式–文件–管道–socket–信号–信号量–共享内存线程的状态及优先级–new, ready, run, block, dead 线程-1什么是线程?(thread)–线程是操作系统任务调度的最小单
5、元,一个进程可以包含多个线程,至少需要一个主线程–由线程ID,程序计数器,寄存器和栈构成–共享代码段,数据段等进程的状态及优先级–new, ready, run, block, dead 主进程进程、线程区别地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信,但需通过线程同步和互斥来保证数据的一致性。调度和切换:线程上下文切换比进程上下文切换要快得多。比喻Python中的进程ossubprocessprocessi
6、ngmultiprocessingPython中的进程-osforksystemimportosos.fork()os.system('pwd')subprocess执行一个命令获得返回值importsubprocessreturnCode=subprocess.call(‘ls-l')printreturnCode执行一个命令获得标准输出importsubprocessp=subprocess.Popen(“ls-l",stdin=subprocess.PIPE,/stdout=subprocess.PIPE,std
7、err=subprocess.PIPE,shell=True)p.wait()printp.returnCode,p.stdout.read()multiprocessing多进程并发linux版本importtimefrommultiprocessingimportPooldefrun(fn):time.sleep(2)printfntestFL=[1,2,3,4,5]pool=Pool(10)pool.map(run,testFL)pool.close()pool.join()multiprocessing多进程并发wi
8、ndows版本importtimefrommultiprocessingimportPooldefrun(fn):time.sleep(2)printfnif__name__=="__main__":testFL=[1,2,3,4,5]pool=Pool(10)
此文档下载收益归作者所有