320x100
전체적으로 점점 뭔지는 알겠는데 따라쓰기에 바쁘고, 해석은 가능하나
이것을 응용한다? 그게 진짜 안나온다.
그만큼 잘 모른다.라고 스스로 인지한다.
그렇다면 이런걸 응용하려면 어떻게 해야할까? 를 고민하게 된다.
chapter1
import threading
# 스레드에서 실행할 함수
def work():
print("[sub] start")
keyword = input("[sub] 검색어를 입력하세요>>>")
print(f"[sub] {keyword}로 검색을 시작합니다.")
print("[sub] end")
# 메인 스레드 실행되는 부분
print("[main] strat")
worker = threading.Thread(target=work)
worker.daemon = True
worker.start()
print("[main] 메인 스레드는 자기할일을 합니다.")
print("[main] end")
chapter2
import threading
import time
# 주식 자동 매매
# 매수, 매도
# 매수 스레드
def buyer():
for i in range(5):
print("[매수] 데이터 요청 중...")
time.sleep(1)
print("[매수] 데이터 분석 중...")
time.sleep(1)
print("[매수] 오!! 지금이 매수 타이밍 인가!!...")
time.sleep(1)
print("[매수] 풀매수 가즈아!!")
time.sleep(1)
# 매도 스레드
def saler():
for i in range(5):
print("[매도] 데이터 요청 중...")
time.sleep(1)
print("[매도] 데이터 분석 중...")
time.sleep(1)
print("[매도] 손절할지? 익절할지?")
time.sleep(1)
print("[매도] 눈물을 머금고 손절합니다.")
time.sleep(1)
# 메인 스레드
print("[메인] start")
buyer = threading.Thread(target=buyer)
saler = threading.Thread(target=saler)
buyer.start()
saler.start()
buyer.join() # 매수 스레드가 종료될때까지 메인 스레드가 기다림
saler.join() # 매도 스레드가 종료될때까지 메인 스레드가 기다림
print("[메인] 장이 종료되었습니다.")
chapter 3
import multiprocessing as mp
# 프로세스에서 실행할 함수
def sub_process(name):
print("[sub] start")
print(name)
cp = mp.current_process()
print(f"[sub] pid : {cp.pid}")
print("[sub] end")
# 메인 프로세스
if __name__ == "__main__": # 메인 모듈일 경우에만 여기 (if 영역)에 해당되는 것을 실행해라.
print("[main] start")
p = mp.Process(target=sub_process, args=("startcoding",))
p.start()
cp = mp.current_process()
print(f"[main] pid : {cp.pid}")
print("[main] end")
# if __name__ == "__main__"을 윈도우에서만 사용하는 이유
chapter4
from multiprocessing import Process
import time
class Subprocess(Process):
def __init__(self, name):
Process.__init__(self)
self.name = name
def run(self):
print(f"[sub] {self.name} start")
time.sleep(3) # 3초간 쉬어가는 것
print(f"[sub] {self.name} end")
if __name__ == "__main__":
print("[main] start")
p = Subprocess(name="startcoding")
p.start()
time.sleep(1)
# 프로세스가 살아있는지 검사
# print(p.is_alive()) # 메서드는 끝에 ()를 붙여주는 거라고 한다.
if p.is_alive:
p.terminate()
print("[main]end")
# 추가학습
# 1. 스레드간 데이터 처리 (lock)
# 2. 프로세스간 데이터 전송 (Queue, Pipe)
# 3. 속도 비교
# 4. 운영체제와 메모리
300x250
'개발일지 > Python' 카테고리의 다른 글
파이썬 datetime 모듈로 올해 확인 및 응용버전 (0) | 2022.04.30 |
---|---|
22.03.03 [파이썬 웹개발] 함수고급(레이터시리즈) (0) | 2022.03.03 |
22.03.02 [파이썬 웹개발] 정규표현식 (0) | 2022.03.02 |
22.03.02 [파이썬 웹개발] class 마지막 파트 (0) | 2022.03.02 |
22.03.01 [파이썬 웹개발] class 다시! part1 (0) | 2022.03.01 |