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()
get进程id

进程数据共享

进程各自持有一份数据,默认无法共享数据

 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的主要内容,如果未能解决你的问题,请参考以下文章

学习python:day10

Python学习之路——Day10(线程进程)

python学习——day10

Python学习路程day10

Python学习日记day10

python 机器学习有用的代码片段