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 모듈 등 내용 과 관련된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.