1

线程,协程

 

1. 线程的创建.

2.基于类创建线程

打印结果:

主线程 (两秒后往下执行)
egon say hello

 

3. 多线程与多进程.

  

线程的属性

 案例

  

join方法

 打印结果: 三行代码经过2秒同时打印出来,(如果把join去掉的话,先打印主线程 ,然后记过两秒打印子线程.)

egon say hello
主线程
False

 

守护线程案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from threading import Thread
import time
def sayhi(name):
    time.sleep(2)
    print('%s say hello' %name)
 
if __name__ == '__main__':
    t=Thread(target=sayhi,args=('egon',))
    t.setDaemon(True) #必须在t.start()之前设置  ,这段代码还没来得及子线程执行就已经结束了,所以只打印了结果的输出
    t.start()
    print('主线程')
    print(t.is_alive())
 
打印结果:
延时两秒打印如下内容
主线程
True

  

 

 

协程:

  

 打印结果: 前十个12345 一个一个输出,后10个一次性输出.

12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345

 

协程案例。

协程的应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from gevent import monkey;monkey.patch_all()
import gevent
import requests
import time
 
def get_page(url):
    print('GET: %s' %url)
    response=requests.get(url)
    if response.status_code == 200:
        print('%d bytes received from %s' %(len(response.text),url))
 
 
start_time=time.time()
gevent.joinall([
    gevent.spawn(get_page,'https://www.python.org/'),
    gevent.spawn(get_page,'https://www.yahoo.com/'),
    gevent.spawn(get_page,'https://github.com/'),
])
stop_time=time.time()
print('run time is %s' %(stop_time-start_time))

  

  

 

posted @   萌哥-爱学习  阅读(255)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示