2 回答

TA貢獻1111條經驗 獲得超0個贊
為什么不生成文件列表,然后使用池處理它們?
import multiprocessing
def ExtractData(file):
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)
# if there are millions of files, you might want an iterator
filename_iterator = glob.iglob("H:/datas_Output/xmldata/", recursive=True)
with multiprocessing.Pool(processes=multiprocessing.cpu_count()) as pool:
results = pool.map(ExtractData, filename_iterator)

TA貢獻1815條經驗 獲得超10個贊
Python多線程不是“真實的”。首先,有一個“全局解釋器鎖”(GIL),它只允許一個線程同時運行py。此外,python線程不使用獨立的真實處理器內核。主要好處是一個線程可以在外部I / O操作上被阻止;其他線程可以執行某些操作。
但是,在其他環境(如 JVM(Java、柯特林等)中,支持實際線程。
添加回答
舉報