国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

python eventlet綠化和patch原理

瀏覽:156日期:2022-07-04 15:43:31

說明

eventlet是一個必備工具,經常用,綠化原理有點忘記了,重新復習一遍.

三個主要問題

1. 綠化的原理是什么?2. 綠化怎么管理?3. 綠化怎么引入?

綠化原理

利用select/epolls/kqueue等操作系統提供的非阻塞操作,將阻塞改為非阻塞.

引用管理

eventlet在import之后,將模塊中的屬性綠化.用一小段代碼來查看看

import sysimport eventlet# eventlet.monkey_patch() httplib2 = eventlet.import_patched(’httplib2’)print(httplib2)print(httplib2.socket) print('================')for k,v in sys.modules.items(): if 'socket' in k: print(k, v) # 打印內容<module ’httplib2’ from ’D:workspacevenvxxxlibsite-packageshttplib2__init__.py’><module ’eventlet.green.socket’ from ’D:workspacevenvxxxlibsite-packageseventletgreensocket.py’>================_socket <module ’_socket’ from ’c:pythonpython36DLLs_socket.pyd’>socket <module ’socket’ from ’c:pythonpython36libsocket.py’>__original_module_socket <module ’socket’ from ’c:pythonpython36libsocket.py’> # 說明了什么?綠化只是替換httplib2模塊中的引用屬性socket。并未改變sys.modules中的屬性

引入綠化方法一:直接import

from eventlet.green import socket

引入綠化方法二:eventlet.import_patch

1.好處: 能綠化模塊內部的系統模塊2.只能綠化os, select, socket, thread, time, psycopy, MySQLdb, bultines, subprocess3.如果是import threading,不會自動綠化, 需要from eventlet.green import threading

import eventlethttplib2 = eventlet.import_patched(’httplib2’)print(httplib2)print(httplib2.socket) # 打印<module ’httplib2’ from ’D:workspacevenvautumn-secslibsite-packageshttplib2__init__.py’><module ’eventlet.green.socket’ from ’D:workspacevenvautumn-secslibsite-packageseventletgreensocket.py’>

引入綠化方法三:eventlet.monkey_patch

1.與import_patch不同,會直接修改sys.modules2.但是也只能綠化os,select等等幾個模塊,其它模塊需要用直接引用綠化

以上就是python eventlet綠化和patch原理的詳細內容,更多關于python eventlet的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 买车| 子长县| 南召县| 汕头市| 麻阳| 鹰潭市| 淳安县| 广东省| 巴东县| 镇赉县| 霍邱县| 福州市| 平舆县| 余姚市| 贵阳市| 卢湾区| 紫阳县| 荣昌县| 赤峰市| 区。| 炎陵县| 丰顺县| 甘南县| 余庆县| 汝城县| 明光市| 内乡县| 安达市| 宁阳县| 海林市| 樟树市| 夏邑县| 井陉县| 班戈县| 屏南县| 灵武市| 海原县| 榆社县| 三穗县| 琼中| 卢湾区|