python 이벤트렛 녹화와patch 원리
이벤트렛은 필수 도구로 자주 사용되며 녹화 원리를 잊어버리고 다시 한 번 복습합니다.
세 가지 주요 문제
1. 녹화의 원리는 무엇입니까?
2. 녹화는 어떻게 관리합니까?
3. 녹화는 어떻게 도입합니까?
녹화 원리
select/epolls/kqueue 등 운영체제가 제공하는 비차단 조작을 이용하여 차단을 비차단으로 변경합니다.
참조 관리
이벤트let은 import 후에 모듈의 속성을 녹화합니다.
코드 한 토막으로 보기
import sys
import 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:\\workspace\\venv\\xxx\\lib\\site-packages\\httplib2\\__init__.py'>
<module 'eventlet.green.socket' from 'D:\\workspace\\venv\\xxx\\lib\\site-packages\\eventlet\\green\\socket.py'>
================
_socket <module '_socket' from 'c:\\python\\python36\\DLLs\\_socket.pyd'>
socket <module 'socket' from 'c:\\python\\python36\\lib\\socket.py'>
__original_module_socket <module 'socket' from 'c:\\python\\python36\\lib\\socket.py'>
# ?
httplib2 socket。 sys.modules
녹화 방법 도입 1: 직접import
from eventlet.green import socket
녹화 방법 도입 2:eventlet.import_patch 1. 장점: 녹화 모듈 내부의 시스템 모듈
2.os,select,socket,thread,time,psycopy,MySQLdb,bultines,subprocess만 녹화 가능
3.importthreading이면 자동으로 녹화되지 않습니다.from eventlet이 필요합니다.green import threading
import eventlet
httplib2 = eventlet.import_patched('httplib2')
print(httplib2)
print(httplib2.socket)
#
<module 'httplib2' from 'D:\\workspace\\venv\\autumn-secs\\lib\\site-packages\\httplib2\\__init__.py'>
<module 'eventlet.green.socket' from 'D:\\workspace\\venv\\autumn-secs\\lib\\site-packages\\eventlet\\green\\socket.py'>
녹화 방법 도입 3:eventlet.monkey_patch1. import와_patch가 다르면sys를 직접 수정합니다.modules
2. 그러나 os,select 등 몇 개의 모듈만 녹화할 수 있고 다른 모듈은 직접 녹화를 인용해야 한다
이상은python 이벤트렛 녹화와patch 원리에 대한 상세한 내용입니다.python 이벤트렛에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.