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、柯特林等)中,支持实际线程。
添加回答
举报