나는 파이썬 스크립트로 beginar이다. msaccess 데이터베이스 레코드를 읽고 XML 파일에 기록하고 싶습니다. 액세스 데이터베이스 테이블에 20000 개가 넘는 레코드가 있습니다.파이썬의 스레드
이제 할 수 있지만 4 분에서 5 분 정도 걸립니다. 그래서 스레딩 개념을 구현합니다. 그러나 스레딩은 5 ~ 6 분 이상 걸립니다. 각 스레드는 테이블에서 레코드를 읽는 데이터 소스를 열고 데이터 소스를 닫습니다.
문제를 해결하는 방법을 모르겠습니다.
코드 :
class ConfigDataHandler(Thread):
def __init__(self, dev):
Thread.__init__(self)
self.dev = dev
def run(self):
db_source_path = r'D:\sampleDB.mdb'
db_source = win32com.client.Dispatch(r'ADODB.Connection')
db_source.ConnectionString = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;
DATA SOURCE=' + db_source_path + ';'
db_source.Open()
query = """ SELECT * from table"""
source_rs = win32com.client.Dispatch(r'ADODB.Recordset')
source_rs.Open(query, db_source, 3, 1)
while not source_rs.EOF :
f_units.append(source_rs.fields("Name").Value))
source_rs.MoveNext()
source_rs.Close()
db_source.Close()
out = render(f_units)
open("D:/test.xml", "w").write(out)
d_list = get_dev_list()
for d in d_list:
current = ConfigDataHandler(d)
current.start()
여기에 코드 스 니펫을 붙여주십시오. –
프로파일 러를 사용하여 시간이 소비 된 곳을 확인 했습니까? 나는 시간의 80 %가 Jet에 대한 ODBC 연결에 있다고 확신합니다. 몇 가지 사실을 수집하기 위해 프로그램을 프로파일 링 할 수 있습니까? –