【发布时间】:2017-08-25 08:55:16
【问题描述】:
我创建了一个非常简单的脚本,它适用于多处理和 SQL。本练习的目的是获得最短的执行时间:
def Query(Query):
conn = sqlite3.connect("DB.db")
cur = conn.cursor()
cur.execute(Query)
cur.close()
conn.close()
return
if __name__ == '__main__':
conn = sqlite3.connect("DB.db")
cur = conn.cursor()
start = time.time()
curOperations.execute(QUERY)
curOperations.execute(QUERY)
curOperations.execute(QUERY)
end = time.time()
TIME1 = end - start
cur.execute('PRAGMA journal_mode=wal')
conn.commit()
start = time.time()
pool = Pool(processes=2)
pool.imap(Query,[QUERY, QUERY, QUERY])
pool.close()
pool.join()
end = time.time()
TIME2 = end - start
cur.close()
conn.close()
执行 20 次后 TIME1 的平均结果为 13.43,TIME2 为 10.39。
不应该低于那个吗?!我是不是做错了什么?
【问题讨论】:
-
13.43 / 3 = 4.48 sec和10.39 / 2 = 5.2 sec考虑到创建新流程的开销是相当可比的。我会说它的表现比我预期的要好。 -
我不明白你为什么在多处理情况下除以 2
-
3 个任务,2 个进程,这意味着其中一个必须依次完成 2 个工作。
标签: python python-2.7 sqlite python-multiprocessing