python学习——day10
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习——day10相关的知识,希望对你有一定的参考价值。
上节回顾
python多线程(实际:单线程的上下文切换)
IO操作基本不占用CPU #从内存、硬盘、网络读写数据等操作 适合多线程
计算占用CPU #1+1 适合多进程
python多进程(multiprocessing)
8核===>在同一时间可以干8件事(起8个进程)
多进程特点:
- 每一个进程都是由父进程启动的
- 子进程被父进程启动后就是独立的(父进程copy了一份给子进程)
1 from multiprocessing import Process #多进程 2 import os 3 4 def info(title): 5 print(title) 6 print(‘module name:‘, __name__) 7 print(‘parent process:‘, os.getppid()) #获取父进程的端口号 8 print(‘process id:‘, os.getpid()) #获取当前进程的端口号 9 print(‘\\n‘) 10 11 def f(name): 12 info(‘\\033[31;1mcalled from child process function f\\033[0m‘) 13 print(‘hello‘, name) 14 15 if __name__ == ‘__main__‘: 16 info(‘\\033[32;1mmain process line\\033[0m‘) 17 p = Process(target=f, args=(‘bob‘,)) 18 p.start() 19 p.join()
进程数据共享
进程各自持有一份数据,默认无法共享数据
1 from multiprocessing import Process, Manager 2 import os 3 def f(d, l): 4 d[os.getpid()] =os.getpid() 5 l.append(os.getpid()) 6 print(l) 7 8 if __name__ == ‘__main__‘: 9 with Manager() as manager: 10 d = manager.dict() #{} #生成一个字典,可在多个进程间共享和传递 11 12 l = manager.list(range(5))#生成一个列表,可在多个进程间共享和传递 13 p_list = [] 14 for i in range(10): 15 p = Process(target=f, args=(d, l)) 16 p.start() 17 p_list.append(p) 18 for res in p_list: #等待结果 19 res.join() 20 21 print(d) 22 print(l)
以上是关于python学习——day10的主要内容,如果未能解决你的问题,请参考以下文章