시그널 모듈 소개
최근에 리눅스 시그널 관련 내용을 읽었는데, 시그널은 프로세스 간 통신과 비동기 처리에 사용될 수 있습니다. Python 표준 라이브러리는 신호를 처리하는 데 사용할 수 있는 신호 패키지를 제공합니다. 여기서 논의되는 것은 Unix 시스템에서 Python의 신호 모듈입니다.
신호의 간단한 예
공식 문서에는 다음 예가 있습니다.
import signal, os # 定义一个信号处理函数,该函数打印收到的信号,然后raise IOError def handler(signum, frame): print 'Signal handler called with signal', signum raise IOError("Couldn't open device!") # 对SIGALRM(终止)设置处理的handler, 然后设置定时器,5秒后触发SIGALRM信号 signal.signal(signal.SIGALRM, handler) signal.alarm(5) # This open() may hang indefinitely fd = os.open('/dev/ttyS0', os.O_RDWR) signal.alarm(0) # 关闭定时器
이 예에서 구현된 기능은 파일을 열 때 오류나 기타 예외를 방지하는 것입니다. 항상 대기 상태에서 타이머를 설정하고 5초 후에 IOError를 발생시킵니다. 5초 이내에 파일이 정상적으로 열리면 타이머가 클리어됩니다.
신호 설명
기본 신호 이름
import signal signal.SIGABORT signal.SIGHUP # 连接挂断 signal.SIGILL # 非法指令 signal.SIGINT # 连接中断 signal.SIGKILL # 终止进程(此信号不能被捕获或忽略) signal.SIGQUIT # 终端退出 signal.SIGTERM # 终止 signal.SIGALRM # 超时警告 signal.SIGCONT # 继续执行暂停进程 等等...
공통 신호 처리 기능
signal.signal(signalnum, handler)
신호 처리 기능 설정
signal.alarm(time)
SIGALRM 신호 전송 타이머 설정
os.kill
시그널 모듈에 속하지는 않지만 특정 프로세스에 시그널을 보내는 데 사용할 수 있습니다
시그널 사용 예
예 1
# From project httpscreenshot-master, under directory , in source file httpscreenshot.py. def timeoutFn(func, args=(), kwargs={}, timeout_duration=1, default=None): import signal class TimeoutError(Exception): pass def handler(signum, frame): raise TimeoutError() # set the timeout handler signal.signal(signal.SIGALRM, handler) signal.alarm(timeout_duration) try: result = func(*args, **kwargs) except TimeoutError as exc: result = default finally: signal.alarm(0) signal.signal(signal.SIGALRM, signal.SIG_DFL) return result
위의 예에서는 기본 결과를 반환하기 위해 함수 실행 시간 제한을 설정하는 기능을 구현했습니다. 먼저 시간 초과 처리 함수가 설정되고 해당 함수에서 사용자 지정 예외가 발생합니다. 함수를 실행하기 전에 signal.alarm을 설정하십시오. 시간이 초과되면 SIGALRM 예외가 발생합니다. 그런 다음 예외가 캡처되고 기본값이 설정됩니다. 마지막으로 타이머를 취소하는 정리 작업이 수행됩니다. 기본값으로 설정합니다.
예제 2
이 예는 여기서 따왔습니다. 요구사항은 Python으로 가져온 모듈을 동적으로 로드하는 것입니다. 즉, 가져온 모듈 코드가 업데이트되면 참조된 코드가 즉시 업데이트될 수 있기를 바랍니다. 예는 다음과 같습니다.
# lib.py def scrape_me_bro(): print "Scraping is fun" #scrape.py import time import signal import lib def scrape(): # Assume we are hitting Streaming API # and doing something buzzwordy with it while True: lib.scrape_me_bro() time.sleep(2) def reload_libs(signum, frame): print "Received Signal: %s at frame: %s" % (signum, frame) print "Excuting a Lib Reload" reload(lib) # Register reload_libs to be called on restart signal.signal(signal.SIGHUP, reload_libs) # Main scrape()
scrape.py가 실행되면 프로그램은 lib.py의 scrape_me_bro() 메서드를 2초마다 호출합니다. 변경, 호출 scrape.py를 실행하는 프로세스는 SIGHUP 신호를 보낸 다음 lib.py를 다시 로드하고 루프에서 수정된 scrape_me_bro() 메서드를 실행합니다.

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
