[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(7일차)
오늘 학습 주제
1. 시간 관리
2. 작업 예약
3. 프로그램 실행
4. 마우스와 키보드 제어하기(pyautogui)
시간 관리
- Time -
시간과 관련된 기능을 제공하는 모듈
시간 측정, 딜레이, 시간 형식 변환 등에 사용
코드 | 설명 |
time() | 현재 시각을 1970년 1월 1일 0시 0분 0초를 기준으로 초(sec) 단위로 지난 시간을 리턴(float타입)할 때 사용 |
ctime() | time()으로 리턴된 시간을 읽기 쉬운 문자열로 가공할 때 사용 |
sleep() | 지정한 초(sec)만큼 프로그램 일시 중지할 때 사용 |
datetime() | 보기 좋은 포맷으로 시간을 리턴할 때 사용 |
timedelta() | 시간의 차이를 계산할 때 사용 |
timedelta로 지정한 날짜의 차이를 출력
작업 예약
프로그램 실행
비동기화
- 프로세스(Process) -
운영체제에서 어떤 실행 프로그램이 실행된다는 것은 CPU, 메모리와 같은 컴퓨터 자원을 사용
운영체제는 프로그램들이 실행될 수 있는 공간인 프로세스를 제공
실행 중인 프로그램 = 프로세스
프로그램의 명령어와 데이터가 메모리에 올라가 있는 상태
- 프로세서(Processor) -
프로세스를 실행하는 주체로 중앙 처리 장치(CPU)라고 한다
일을 처리할 프로세스를 얼마나 실행시킬지 계획을 하는 스케줄링을 한다
- 스레드(Thread) -
프로세스의 실행 단위
프로세스는 최소 하나 이상의 스레드를 가지고 있다
프로세스가 받은 자원을 제어를 담당
- 병렬 처리(Multi Threading) -
여러 개의 프로세서(processor)를 통해 하나 또는 그이상의 프로그램 처리하는 방식
여러 개의 스레드가 하나의 데이터 자원을 공유한다
메모리에 대한 효율성을 가진다
처리 부하를 분담하기에 처리 속도의 향상을 가져온다
《 Multithreading : I/O intensive tasks 》
하나의 포로세스에 여러 스레드로 자원을 공유하여 작업을 나누어 수행하는 것
CPU의 사용은 낮지만, I/O 사용이 많은 경우
《 Multiprocessing : CPU intensive tasks 》
두 개 이상의 프로세서(CPU)가 협력하여 하나 이상의 작업(Task)을 동시에 처리하는 것
CPU 사용이 높고, 계산량이 많은 경우
Cost가 높다
기기의 코어 수 만큼만 병렬처리가 가능하다
- threading -
스레드 실행을 하기 위해 사용하는 라이브러리
파이썬은 기본적으로 단일 스레드에서 실행이 된다
코드를 병렬로 실행하기 위해서는 별도의 스레드를 생성해야 하는데
이 때 사용하는 라이브러리이다
코드 | 설명 |
Thread() | 단일 실행 스레드를 만들 때 사용 |
start() | 스레드를 시작할 때 사용 |
- multiprocessing -
멀티프로세스를 활용하여 2가지 이상의 일을 동시에 실행하게 해주는 라이브러리
코드 | 설명 |
process() | 멀티프로세스 생성할 때 사용 |
start() | 프로세스를 시작할 때 사용 |
- subprocess -
현재 실행되고 있는 프로세스 안에서 다른 프로세스를 시작하거나 데이터를 주고 받는 라이브러리
프로세스의 입/출력 및 에러 결과에 대한 리턴을 직접 제어할 수 있다
Popen 클래스를 이용하면 프로세스 간의 데이터 통신이 가능하다
코드 | 설명 |
Popen() | 서브프로세스 생성과 관리를 할 때 사용 |
poll() | 서브프로세스의 종료를 확인할 때 사용 |
마우스와 키보드 제어하기(pyautogui)
- pyautogui -
마우스와 키보드 제어를 도와주는 라이브러리
코드 | 설명 |
size() | 현재 사용하고 있는 모니터의 크기를 출력할 때 사용 |
position() | 마우스의 현재 위치를 출력할 때 사용 |
moveTo(Location) | 마우스를 지정한 Location으로 이동시킬 때 사용 |
click() | 마우스 클릭을 실행시킬 때 사용 |
doubleClick() | 마우스 더블클릭을 실행시킬 때 사용 |
dragTo(Location) | 지정한 Location으로 마우스를 드래그할 때 사용 |
write(Contents) | 지정한 Contents를 타이핑할 때 사용 |
press(Key) | 지정한 Key를 입력할 때 사용 |
ketDown(Key) | 지정한 Key를 누른 상태로 유지시킬 때 사용 |
keyUp(Key) | 지정한 Key 누른 상태를 해제할 때 사용 |
hotkey(Key, Key) | 여러 Key를 동시에 입력해야 할 때 사용 |
alert(text, title, button) | 간단한 메세지 박스를 표시할 때 사용 버튼을 누르면 버튼의 value가 리턴 |
confirm(text, title, buttons) | OK와 Cancel 버튼이 있는 메세지 박스를 표시할 때 사용 클릭한 버튼의 value를 리턴 |
prompt(text, title, default) | 입력창이 있는 메세지 박스를 표시할 때 사용 입력한 내용을 리턴 |
password() | [ * ]로 마스킹된 입력창을 표시할 때 사용 |
mouseInfo() | 마우스의 정보를 확인하는 창을 사용할 때 사용 |
screenshot() | 전체 화면을 스크린샷으로 찍고 이미지 객체로 리턴할 때 사용 |
getActiveaWindow() | 현재 활성화된 창의 정보 확인할 때 사용 |
참고
https://ctkim.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-time-%EB%AA%A8%EB%93%88
https://wikidocs.net/82581#google_vignette
https://hhj6212.github.io/programming/python/2021/04/18/python-multi.html