Python 多进程和数据传递的理解
2017-10-09 11:29
701 查看
Python 多进程和数据传递的理解
python不仅线程用的是系统原生线程,进程也是用的原生进程
进程的用法和线程大同小异
import multiprocessing p = multiprocessing.Process(target=fun,args=())
线程的基本方法在进程中都能够使用
但是进程和线程中有一个明显的区别:可以实现多核的运用
python本身会启动一个主进程,并且拥有一个主线程把主进程看做一家之主,那主线程也是他本身,其他线程就相当于老婆们
而进程,长大了的儿子们,线程固然是不能分割的,一家人还是要团结,但是儿子自家的事务,老子却也不能插手,所以,一家只能占用一个CPU实现单核运用的话,生多个儿子那必然就实现了多核运用
GIL锁住的,只是一个进程,让一家人团结
但是一个进程只有这么一把全量锁,线程不能单独跑,那就打包一起跑
多进程就这样完成了一般语言中多线程的优化
数据传递
多线程,多进程中总有要协同的工作,都涉及数据的交互,不过交互方式有些不同
信息进行传递的时候,为了不阻塞执行一般会将数据放入对列当中而不是直接返回
线程中,由于都属于同一个进程,定义一个全局的队列在各线程中就能够压入数据
进程可能运行在不同的CPU上,因此,相互间的传递不能在全局定义,只能通过创建时进行传入
内部操作:传入的队列实际上并不是将引用传入,然后直接操作队列,这毕竟是不同的CPU上的工作
队列的传入实际上是队列拷贝的传入,通过pickle拷贝后进行传入,然后再pickle将数据传回
import multiprocessing multiprocessing.Queue()
线程和进程都有不同的队列对象,以实现不同的数据交互,不能错位使用
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- Python 2.7_多进程获取简书专题数据(一)
- angularjs深入理解向指令传递数据,双向绑定机制
- python socket通信 以16进制的数据进行传递与解析
- [置顶] 关于Python CGI编程前后端数据传递问题
- 我对Bundle传递数据的理解
- 11.python并发入门(part10 多进程之间实现通信,以及进程之间的数据共享)
- android MVP 轻松理解MVP模式的数据传递与逻辑处理
- 通过CGI程序传递checkbox数据 python3
- python多进程中传递变量
- 《head first python》——理解数据:列表排序与集合
- Python实现 多进程导入CSV数据到 MySQL
- 如何理解Bundle传递数据与直接用intent传递数据
- python-django-模板数据的传递
- Python创建多进程,用Queue传递信息
- Python 多进程 —— 共享数据
- 深入理解Activity之间的数据传递
- python并发编程之多进程2-------------数据共享及进程池和回调函数
- cookie和session的区别的理解(http://www.jz123.cn/text/196.html)以及页面间数据的传递
- 深入理解python中函数传递参数是值传递还是引用传递
- python 传递的dbus数据类型