0
모든 경우에 threadids로 로그 파일을 구문 분석하려고합니다. 구성 할 수있는 스레드 수에는 제한이 없습니다. 모든 스레드는 동일한 로그 파일에 쓰고 나중에 검사하기 위해 로그 파일을 구문 분석하고 각 스레드에 고유 한 새 파일을 작성합니다.
아래 목록에서 스레드 ID를 캡처하고 있습니다.
아래 코드는 작업을 수행하고 있지만 이것이 효율적이지 않다고 생각합니다. 더 빠른 것이있을 수 있습니까? 당신이 메모리에 전체 로그 파일을 넣을 수 가정모든 목록 요소에 대해 파일을 더 빨리 구문 분석하고 목록 요소를 기반으로 새 파일을 보냄
sThdiD = ["abc", "cde\"efg"]
folderpath = "newdir"
os.system("mkdir " + folderpath)
for line in open(filetoopen):
for i in sThdiD:
if i in line:
open(folderpath+"/"+i+".log","a+").write(line)
루프마다 매번 open을 호출하는 대신 열려있는 파일 목록을 유지하십시오. – jterrace
threadid는 몇 개입니까? 한 번에 수천 개의 열린 파일이 실제로 문제가되어서는 안됩니다 (시스템이 다르게 사용되지 않는 경우). – extraneon
subprocess.call은 os.system이 아닙니다. 더 안전합니다. 또한 실제로 open (folderpath + "/"+ i + ". log", "a +"). write (line)'을'open (os.path.join (folderpath, i + ".log") " a + "). write (line)' – Ben