๐[Python] ์ค์ผ์ค๋ฌ์ ๋ํด์โฆ
Python ์ค์ผ์ค๋ง
์ค์ผ์ค๋ง
์ด๋, ๋ด๊ฐ ์ค์ ๋์์ํค์ง ์์๋ ํน์ ์๊ฐ์ด ๋๋ฉด ์ฝ๋ ์์์ ์๋์ผ๋ก ๋์ํ๊ฒ ํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
์๋ฅผ ๋ค์ด ์ฃผ์ ์ ๋ณด๋ฅผ ํฌ๋กค๋ง ํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ ๋ค๊ณ ํ ๋, ์ฃผ๊ฐ ๋ณ๋์ ๊ณ ๋ คํด์ผํ๊ธฐ ๋๋ฌธ์ ์ค์ผ์ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์๊ฐ๋ง๋ค ์ ๋ณด๋ฅผ ์
๋ฐ์ดํธ ํด์ฃผ์ด์ผ ํ๋ค.
์ค์ผ์ค๋ฌ์๋ BackgraoundScheduler
์ BlockingScheduler
๊ฐ ์๋ค.
ํด๋น ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ฉด์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๊ณ์ํด์ ์ฌ์ฉํด์ผ ํ๋ค๋ฉด BackgraoundScheduler
๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์คํ ํ๋ก์ธ์ค๊ฐ ๋จ์ผ ํ๋ก์ธ์ค๋ผ๋ฉด BlockingScheduler
๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
1. schedule
ํ์ด์ฌ์์ ์ฌ์ฉํ ์ ์๋ ์ค์ผ์ค๋ฌ ๋ชจ๋์ด ์๋ค.
pip install schedule
์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ฌ schedule
๋ชจ๋์ ์ค์นํ๋ค.
[์์]
import schedule
import time
import datetime
#์ค์ผ์ฅด ๋ชจ๋์ด ๋์์ํฌ ์ฝ๋ : ํ์ฌ ์๊ฐ ์ถ๋ ฅ
def test_fuction():
now = datetime.datetime.now()
print("test code- ํ์ฌ ์๊ฐ ์ถ๋ ฅํ๊ธฐ")
print(now)
#1์ด๋ง๋ค test_fuction์ ๋์์ํค์
schedule.every(1).seconds.do(test_fuction)
#๋ฌดํ ๋ฃจํ๋ฅผ ๋๋ฉด์ ์ค์ผ์ฅด์ ์ ์งํ๋ค.
while True:
schedule.run_pending()
time.sleep(1)
- ์ ์ฝ๋์ ๊ฐ์ด
schedule.every(1).seconds.do(test_fuction)
๋ฅผ ์์ฑํ๋ฉด 1์ด๋ง๋ค test_fuction์ ๋์์ํค๊ฒ ๋๋ค.
[๊ฒฐ๊ณผ]
2021-05-16 22:08:08.464882
test code- ํ์ฌ ์๊ฐ ์ถ๋ ฅํ๊ธฐ
2021-05-16 22:08:09.480980
test code- ํ์ฌ ์๊ฐ ์ถ๋ ฅํ๊ธฐ
2021-05-16 22:08:10.492642
test code- ํ์ฌ ์๊ฐ ์ถ๋ ฅํ๊ธฐ
2021-05-16 22:08:11.507662
test code- ํ์ฌ ์๊ฐ ์ถ๋ ฅํ๊ธฐ
2021-05-16 22:08:12.513250
2. apscheduler
apscheduler๋ ํ์ด์ฌ ๊ณต์ ๋ฌธ์์ ์ฐธ์กฐ ๋์ด์๋ค.
๊ณต์๋ฌธ์
- ์ํ๋ฐฉ์
-
- Cron ๋ฐฉ์ - Cron ํํ์์ผ๋ก ์ํ
-
- Date ๋ฐฉ์ - ํน์ ๋ ์ง์ ์ํ
-
- Interval ๋ฐฉ์ - ์ผ์ ์ฃผ๊ธฐ๋ก ์ํ
์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ ๋ชจ๋์ ์ค์นํ๋ค.
pip install apscheduler
[์์]
def job(data):
print('data : ' + data)
def main():
job('hello?')
if __name__ == "__main__":
main()
์ ์ฝ๋๋ โhello?โ๋ฅผ ์ถ๋ ฅํ๋ job()๋ฅผ ์คํ์ํค๋ ์ฝ๋์ด๋ค.
job()์ 3์ด์ ํ ๋ฒ์ฉ ์คํ์ํค๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
from apscheduler.schedulers.background import BlockingScheduler
def job(data):
print('data : ' + data)
def main():
# sched = BlockingScheduler()
sched = BlockingScheduler(timezone='Asia/Seoul') # ์์ธ ์๊ฐ์ผ๋ก ๋ง์ถค
sched.add_job(job,'interval', seconds=3, id='test',args=['hello?'])
sched.start()
if __name__ == "__main__":
main()
์์ ๊ฐ์ด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด 3์ด์ ํ ๋ฒ์ฉ ์๋์ผ๋ก ์คํํ๊ฒ๋๋ค.
์คํํ๊ณ ๋๋ฉด, ๋ด๊ฐ ๋ฉ์ถ๊ธฐ ์ ๊น์ง๋ ๊ณ์ ๋์๊ฐ๋ค.
- ์ฃผ์ํ ์
- add_job์ ์ธ์, โintervalโ์ด ์ฃผ๊ธฐ์ ์ผ๋ก ์คํ๋๋ค๋ ๊ฒ์ ์๋ ค์ค.
args
๋ ๋ฐ๋์ ๋ฆฌ์คํธ์ ํํ๋ฅผ ๋์ด์ผ ํจ.id
๋ ์ ์์๊น?ย ยป ์ด ์ ์ job()์ด ์คํ๋๊ณ , 3์ด๊ฐ ์ง๋ ๋ค์ job()์ด ์คํ๋๋ ค๊ณ ํ๋๋ฐ, ๊ฐ์ id๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์คํ์ค์ธ์ง ์๋์ง ํ์ธํ๋ ์ฉ๋์ธ ๋ฏ ํ๋ค.
์ฐธ๊ณ ๋ฌธ์ ๋ฐ ๋ธ๋ก๊ทธ
https://lemontia.tistory.com/508
https://ffoorreeuunn.tistory.com/466
https://ybworld.tistory.com/74
๋๊ธ๋จ๊ธฐ๊ธฐ