python 다 중 스 레 드 연습 문제

다 중 스 레 드 연습 문 제 는 지식 과 관련 된 점 이 많 고 좋 은 연습 문제 에 속한다.
제목 요구
다 중 스 레 드 를 통 해 Liux 와 유사 한 >> 기능 을 실현 합 니 다. 즉, 로 그 를 지정 한 파일 에 기록 하 는 것 입 니 다.
제목 분석
기본적으로 main.py 주요 처리 논리, utils.py 구조 도구 류 와 대응 하 는 방법 을 쓴다.main.py 서버 () 클래스 를 정의 하고 클래스 에서 정의 하 는 방법 으로 내용 을 출력 합 니 다.실례 화 도구 클래스, 시작 라인, 표준 출력 과 오류 출력 을 로그 파일 로 설정 합 니 다.서버 () 클래스 를 예화 하고 호출 하 는 방법 으로 내용 의 지속 적 인 출력 을 진행 합 니 다.utils.py 도구 클래스 를 정의 합 니 다. 도구 클래스 는 인자: 로그 이름 을 입력 해 야 합 니 다.로그 가 존재 하 는 지 여 부 를 판단 하고 존재 하지 않 으 면 로 그 를 작성 합 니 다.존재 하면 로 그 를 추가 로 기록 합 니 다.
이루어지다main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import sys
from queue1.log_out.utils import TraceLog

class Server(object):
    def log(self):
        print("start server")
        for i in range(100):
            print(i)
        print("end server") #print      sys.stdout.write()  


if __name__ == "__main__":
    traceLog = TraceLog("main.log")
    traceLog.start()
    sys.stdout = traceLog 
    sys.stderr = traceLog
    server = Server()
    server.log() #print    traceLog.write()  
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import codecs
from threading import Thread, Lock
import os

class TraceLog(Thread):
    def __init__(self, logName):
        super(TraceLog, self).__init__() #          
        self.logName = logName
        self.lock = Lock()
        self.contexts = []
        self.isFile()

    def isFile(self):
        if not os.path.exists(self.logName):
            with codecs.open(self.logName, 'w') as f:
                f.write("this log name is :{0}
"
.format(self.logName))
f.write("start log
"
)
def write(self, context): self.contexts.append(context) # def run(self): while 1: self.lock.acquire() if len(self.contexts) != 0: with codecs.open(self.logName, 'a') as f: # for context in self.contexts: f.write(context) del self.contexts[:] # self.lock.release()

출력 결과 현재 디 렉 터 리 에서 main.log 파일 이 생 성 됩 니 다. 파일 내용 은 다음 과 같 습 니 다.
1
2
3
4
5
6
7
8
9
10
11
this log name is :main.log
start log
start server
0
1
2
.
.
98
99
end server

파일 읽 기 쓰기, 잠 금, 다 중 스 레 드, sys 모듈, os 모듈 등 내용 과 관련된다.

좋은 웹페이지 즐겨찾기