我想通过线程将数据插入我的MySQL数据库。为了获取我的数据,我需要解析多个XML文件,所以我决定让每个文件由一个线程解析。
如果我运行代码插入它没有线程一切正常,但如果我运行相同的代码与更多的线程弹出一个Windows错误,程序退出。
#semaphore.acquire()
try:
cursor.execute("LOAD DATA LOCAL INFILE '%s' INTO TABLE %s LINES TERMINATED BY '\r\n'" %
(filename, tablename))
commit()
except MySQLdb.IntegrityError:
pass
#semaphore.release()
这是我通过线程调用的函数。我注释掉信号量,因为我只用一个线程来测试这个代码(这应该与完全不使用任何线程的结果相同,但程序仍然关闭)
这是我的错误代码:
Process finished with exit code -1073741819 (0xC0000005)
为什么我不能用一个线程运行这段代码?
编辑: 多数民众赞成我如何称呼我的职能:
def start_thread():
t = Thread(target=thread_parse, args=(file_name,))
t.start()
thread_list.append(t)
for t in thread_list:
t.join()
def thread_parse(file_name):
parser = CVEParser()
parser.parse(file_name) # Thats the function where it crashes