python 정시 임무를 실현하는 네 가지 방식
Python으로 타이밍 퀘스트 수행하기
때때로 우리는 일정 시간마다 프로그램을 실행하거나 어떤 임무를 반복해서 수행해야 한다.예를 들어 블로거가 지난 글에서 말한 파충류처럼 어떤 목표에 대한 온라인 기어오르기를 실현하려면 실시간 임무도 필요하다.
Python으로 주어진 임무를 수행하는 네 가지 방법
import datetime
def Task():
now = datetime.datetime.now()
ts = now.strftime('%Y-%m-%d %H:%M:%S')
print(ts)
while True: + sleep () 를 사용하여 정시 작업 수행
첫 번째로 생각한 것은 틀림없다. while:true+sleep 조합은 간단하고 난폭하다.
def loopMonitor():
while True:
Task()
# 3s
time.sleep(3)
이런 방법의 단점은 동기화 작업만 실현할 수 있을 뿐 비동기화 작업을 수행할 수 없다는 것이다threading을 이용하다.Timer 타이머로 타이밍 작업 수행
from threading import Timer
def timerMonitor():
Task()
t = Timer(3, timerMonitor)
t.start()
문제가 발생한 것은 실행 횟수가 너무 많을 때 오류가 발생할 수 있다는 것입니다. Pyinstaller maximum recursion depth exceededed Error Resolution최대 귀속 깊이에 도달한 후에 생각나는 것은 최대 귀속 깊이를 수정하는 것이다
sys.setrecursionlimit(100000000)
그러나 최대 CPU까지 실행할 때,python은 프로그램을 직접 삭제합니다.스케줄링 모듈 schedule를 이용하여 정시 임무를 실현하다
schedule는 제3자 경량급 작업 스케줄링 모듈로 초, 분, 시간, 날짜 또는 사용자 정의 이벤트 실행 시간에 따라
여러 작업을 수행하려면 여러 task를 추가할 수 있습니다
코드
import schedule
def scheduleMonitor():
#
schedule.clear()
# 3
schedule.every(3).seconds.do(Task)
# 2
schedule.every(2).seconds.do(Task)
while True:
schedule.run_pending()
그러나 그는 여전히 while Ture와 협조하여 사용해야 하며, 다른 몇 가지보다 CPU를 많이 차지한다.작업 프레임워크 APScheduler를 사용하여 정시 작업 수행
APScheduler는 Python의 정시 작업 프레임워크로 주기 또는 정시 작업을 수행하는 데 사용됩니다. 이 프레임워크는 정시 작업을 추가, 삭제할 수 있을 뿐만 아니라 데이터베이스에 작업을 저장하여 작업의 지속화를 실현하여 사용하기에 매우 편리합니다.
from apscheduler.schedulers.blocking import BlockingScheduler
def APschedulerMonitor():
# :BlockingScheduler
scheduler = BlockingScheduler()
scheduler.add_job(Task, 'interval', seconds=3, id='test_job1')
# , 5S
scheduler.add_job(Task, 'interval', seconds=5, id='test_job2')
scheduler.start()
총결산
1: 순환+sleep 방식은 간단한 테스트에 사용할 수 있다.
2:timer는 비동기적인 시간 작업을 실현할 수 있습니다.
3:schedule는 정해진 시간에 실행할 수 있으나while Ture의 협조가 필요하고 메모리를 많이 차지합니다.
4: APScheduler 프레임워크는 더욱 강력하고 그 안에 정점과 정시 임무를 직접 추가할 수 있어 흠잡을 데가 없다.
그러니까 누구를 써도 내가 말하지 않겠지 QAQ
이상은python이 정시 임무를 실현하는 네 가지 방식의 상세한 내용입니다. 더 많은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에 따라 라이센스가 부여됩니다.