python开发之路之线程、进程、协程

时间:2016-01-07 01:11:59   收藏:0   阅读:212

一、多进程和多线程

技术分享

共同点:

  让多个CPU同时处理请求

区别:

  1.多线程中的线程在内存空间这一点上是共享的,进程与进程使用的是不同的内存空间。即创建线程不需要开辟内存空间,而创建新的进程需要为其分配新的内存空间

 

全局解释器锁(GIL)

  在每一个进程的“出口”,是python特有的。它的作用是:做到了1个限制,什么限制呢,如果有2个线程同时被调度了,此时全局解释器锁就限制同时只能有1个穿过全局解释器锁,才能被CPU调度

技术分享

 

那什么时候该使用多进程,什么时候该使用多线程呢?

 

线程对象的其它方法:

一、线程示例1

thread1.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import threading
import time

def show(arg):
    time.sleep(1)
    print ‘thread‘+str(arg)

for i in range(10):
    #创建1个线程,执行show方法,接收1个参数
    t = threading.Thread(target=show,args=(i,))
    
    #t.setDaemon(True)#主线程执行完成之后,就关闭
  #设置为前台线程,所有的线程执行完成后才关闭 
  t.setDaemon(False)
  t.start()
  
print ‘main thread stop‘

 

thread2.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import threading
import time

def show(arg):
    time.sleep(1)
    print ‘thread‘+str(arg)

for i in range(10):
    #创建1个线程,执行show方法,接收1个参数
    t = threading.Thread(target=show,args=(i,))
  #设置为后台线程,主线程执行完后就直接关闭
  t.setDaemon(True)
  t.start()


print ‘main thread stop‘

 

 

执行thread1.py,产生如下结果:

技术分享

执行thread2.py,产生如下结果:

技术分享

 

原文:http://www.cnblogs.com/jachy/p/5107832.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!