python3 gui协程_Python3进阶-协程
協程簡介
又稱為微進程,纖程。非搶占式使用資源。
優點
優點1:
協程極高的執行效率。因為子程序切換不是纖程切換,而是由程序自身控制,因此,沒有纖程切換的開銷,和多線程對比,纖程數量越多,協程的性能優勢就越明顯。
優點2:
不需要多線程的鎖機制,因為只有一個線程,也不存在同事寫變量沖突,在協程中控制共享資源不加鎖,只需要判斷狀態就好了,所以執行效率比多線程高很多。
用途
多線程+協程,既充分利用多核,又充分發揮協程的高效率,可獲得極高的新能
協程切換
#-*- coding:utf-8 -*-
from greenlet import greenlet
def test1():
print(12)
gr2.switch() #切換對象切換到 [gr2] 對象
print(34)
gr2.switch()
def test2():
print(56)
gr1.switch() #切換對象切換到 [gr1] 對象
print(78)
gr1 = greenlet(test1) # test1 函數的協程對象 gr1
gr2 = greenlet(test2) # test2 函數的協程對象 gr2
gr2.switch()
56
12
78
gevent模塊協程測試
單線程執行爬蟲測試
#-*- coding:utf-8 -*-
import requests,gevent,time
start = time.time()
def f(url):
print("GET:%s" % url)
resp = requests.get(url) #獲取URL
data = resp.text #URL中的數據
print("%s 的文件大小為%s"%(url,len(data))) #計算大小
f('http://www.python.org')
f('https://www.centos.org//')
f('http://zhaojunhui.cn/')
f('http://www.taobao.com/')
f('http://www.jd.com/')
f('http://www.sdo.com/')
print("運行時間",time.time() - start)
GET:http://www.python.org
http://www.python.org 的文件大小為48758
GET:https://www.centos.org//
https://www.centos.org// 的文件大小為20842
GET:http://zhaojunhui.cn/
http://zhaojunhui.cn/ 的文件大小為714
GET:http://www.taobao.com/
http://www.taobao.com/ 的文件大小為132353
GET:http://www.jd.com/
http://www.jd.com/ 的文件大小為122571
GET:http://www.sdo.com/
http://www.sdo.com/ 的文件大小為12383
運行時間 3.820824384689331
gevent模塊多線程協程測試[內容越多效果越明顯]
#-*- coding:utf-8 -*-
import requests,gevent,time
start = time.time()
def f(url):
print("GET:%s" % url)
resp = requests.get(url) #獲取URL
data = resp.text #URL中的數據
print("%s 的文件大小為%s"%(url,len(data))) #計算大小
gevent.joinall([
gevent.spawn(f,"http://www.python.org"),
gevent.spawn(f,"https://www.centos.org/"),
gevent.spawn(f,"http://www.zhaojunhui.cn"),
gevent.spawn(f,"http://www.taobao.com"),
gevent.spawn(f,"http://www.jd.com"),
gevent.spawn(f,'http://www.sdo.com/')
])
print("運行時間",time.time() - start)
GET:http://www.python.org
http://www.python.org 的文件大小為48758
GET:https://www.centos.org/
https://www.centos.org/ 的文件大小為20842
GET:http://www.zhaojunhui.cn
http://www.zhaojunhui.cn 的文件大小為714
GET:http://www.taobao.com
http://www.taobao.com 的文件大小為132353
GET:http://www.jd.com
http://www.jd.com 的文件大小為122571
GET:http://www.sdo.com/
http://www.sdo.com/ 的文件大小為12383
運行時間 3.0470935821533203
總結
以上是生活随笔為你收集整理的python3 gui协程_Python3进阶-协程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android9有深色模式吗,深色模式还
- 下一篇: python中导入模块队列_【每日学习】