标签:端口 多线程 独立 called python学习 hid copy __name__ manager
上节回顾
python多线程(实际:单线程的上下文切换)
IO操作基本不占用CPU #从内存、硬盘、网络读写数据等操作 适合多线程
计算占用CPU #1+1 适合多进程
python多进程(multiprocessing)
8核===>在同一时间可以干8件事(起8个进程)
多进程特点:
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)
标签:端口 多线程 独立 called python学习 hid copy __name__ manager
原文地址:http://www.cnblogs.com/x54256/p/7696494.html