測定geventライブラリを使用して、メインの共有の基本とコード。同期プログラミングにおける非同期プログラミングのためのgeventライブラリをしてみましょう。またはコードに、自分自身のプロのテスト!。
1つの#は/ usr / binに/!のenv pythonの 2# - * -コーディング:UTF- 8 - * - 3#@Date:2020年までに - 03 - 01 13:59:03 4#@Author:Flyinghappy(671474 @ qq.com ) 5#@linkます。https:// www.cnblogs.com/flyinghappy/ 6 #@Version:$イド$ 7 からgeventインポートサル 8 monkey.patch_all() 9 インポートgevent 10 インポート時間 11 インポートasyncio 12 インポート要求 13 urllib.requestインポート 14 :DEF runinfo(FUNC) 15 DEF内(*引数、** kwargsから): 16 プリント(' 开始访问--- ' + STR(引数[ 0 ])+ ' --- ' + STR(引数[ 1 ])) 17 START_TIME = time.time() 18 結果= FUNC(*引数、** kwargsから) 19 STOP_TIME = time.time() 20 プリント(FUNC .__名__ + ' -----時間-runningことである:%S '%(stop_time- START_TIME)) 21 印刷(' 结束访问--- ' + STR(引数[ 0 ])+ ' --- ' + STR(引数[ 1 ])) 22 リターン結果 23 リターンインナー 24 @runinfo 25 デフtaskfun(URL、N): 26 HTML = urllib.request.urlopen(URL).read() 27 戻りHTML 28 DEF async_main(): 29 URL = [ 30 ' http://www.sina.com.cn ' 、 31 ' のhttp:// WWW .cnr.cn " 、 32 ' http://www.hao123.com ' 、 33 ' http://www.taobao.com ' 、 34 ' https://www.eastmoney.com ' 35 ] 36 START_TIME = time.time() 37 g_list = [] 38 のための I における範囲(LEN(URL)): 39 G = gevent.spawn(taskfun、URL [i]は、I) 40 g_list.append(G) 41 gevent.joinall(g_list) 42 STOP_TIME = time.time () 43 プリント(「主---実行時刻:%sの'%(stop_time- START_TIME)) 44 なら __name__ == ' __main__ ' : 45 async_main()
カザフスタンを比較し、以下の2つのグラフ注意:コードのテストの結果は、スクリーンショットを見てください。上記のコードは、非同期処理の機能を実現します。
注意:
gevent輸入サルから
monkey.patch_all()
このコードは、すべてのコードとカザフスタンの上に配置する必要があります。モンキーパッチも上である必要があります!それ以外の場合は同期され、同時なし効果!
あなたは、ネストされたgeventを使用しようとすることができます!私たちは、同時の効果を達成できるかどうか!