Je suis débutant en script python. Je veux lire les enregistrements de base de données msaccess et écrire dans le fichier XML. La table de base de données Access a plus de 20000 enregistrements.Threads en python
Maintenant, je suis capable de faire mais, cela prend 4 à 5 minutes. Donc, je implémente le concept de filetage. Mais le filetage prend également plus de 5 à 6 minutes. Parce que chaque thread ouvre la source de données en lisant les enregistrements des tables et ferme la source de données.
Je ne sais pas comment résoudre les problèmes.
CODE:
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()
Pouvez-vous s'il vous plaît coller votre extrait de code ici? –
Avez-vous utilisé un profileur pour voir où le temps est passé? Je parie que 80% du temps est dans la connexion ODBC à Jet. Pouvez-vous profiler votre programme pour rassembler quelques faits? –