我的Python代码是从XML文件中提取信息并将其加载到数据库中。这些文件命名为数字 ,等等,我有大约100万个文件。11582.xml5300593.xml
我已经构建了代码,它工作正常。我遇到了一个问题,代码没有占用完整的处理器/内存/磁盘容量。我的处理器应该使用20%最大。
我问了这里和其他地方,发现我必须使用多线程才能使用全部容量。因此,我必须更改脚本以采用多线程。我做到了,但仍然没有发挥到最大作用。
我做错了什么?以及如何解决它?
我的代码:
import pymssql
import pyodbc
import pandas as pd
import thread
import glob
import xml.etree.ElementTree as ET
conn = pyodbc.connect('Driver={SQL Server};'
'Server=Server123;'
'Database=NLP;'
'Trusted_Connection=yes;')
cursor = conn.cursor()
def ExtractData(ThreadName):
for file in glob.glob("H:\\datas_Output\\xmldata\\" & ThreadName & "*.xmi"):
filename = file[24:-8]
tree = ET.parse(file)
root = tree.getroot()
for Tag in ['Kitkat', 'Snickers', 'Bounty']:
iTag = '{textsem.ecore}' + Tag
for country in root.findall(iTag):
XMIID = country.get('{XMI}id')
sofa = country.get('sofa')
cursor.execute("INSERT INTO Tags (filename,tag,xmiid,sofa) VALUES (?,?,?,?)", filename, Tag, XMIID, sofa)
try:
thread.start_new_thread( ExtractData, ("1") )
thread.start_new_thread( ExtractData, ("2") )
except:
print("Error: unable to start thread")
conn.commit()
catspeake
动漫人物
相关分类