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

线程与进程理论

时间:2017-08-19 00:49:49      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:process   控制   imp   消息   例子   继承   队列   等级   sock   

前言

 

多线程几乎是每一个程序猿在使用每一种语言时都会首先想到用于解决并发的工具(JS程序员请回避),使用多线程可以有效的利用CPU资源(Python例外)。然而多线程所带来的程序的复杂度也不可避免,尤其是对竞争资源的同步问题。

然而在python中由于使用了全局解释锁(GIL)的原因,代码并不能同时在多核上并发的运行,也就是说,Python的多线程不能并发,很多人会发现使用多线程来改进自己的Python代码后,程序的运行效率却下降了,这是多么蛋疼的一件事呀!如果想了解更多细节,推荐阅读这篇文章

Python提供两组线程的接口,一组是thread模块,提供基础的,低等级接口,使用Function作为线程的运行体。还有一组是threading模块,提供更容易使用的基于对象的接口,可以继承Thread对象来实现线程,还提供了其它一些线程相关的对象

使用thread模块的例子:

import thread

def worker():
    """thread work function"""
    print ‘Work‘
thread.start_new_thread(work)
再讲一下进程
由于前文提到的全局解释锁的问题,Python下比较好的并行方式是使用多进程,这样可以非常有效的使用CPU资源,并实现真正意义上的并发。进程的开销比线程要大服务器承受能力就越大
 
由于线程共享相同的地址空间和内存,所以线程之间的通信是非常容易的,然而进程之间的通信就要复杂一些了。常见的进程间通信有,管道,消息队列,Socket接口
Python的mutliprocess模块提供了封装好的管道和队列,可以方便的在进程间传递消息,还提供了进程池Pool对象,可以方便的管理和控制线程

 

线程与进程理论

标签:process   控制   imp   消息   例子   继承   队列   等级   sock   

原文地址:http://www.cnblogs.com/yianketang/p/7392674.html

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