码迷,mamicode.com
首页 > 编程语言 > 详细

python学习——day10

时间:2017-10-20 10:05:16      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:端口   多线程   独立   called   python学习   hid   copy   __name__   manager   

上节回顾

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

标签:端口   多线程   独立   called   python学习   hid   copy   __name__   manager   

原文地址:http://www.cnblogs.com/x54256/p/7696494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!