我用“multiprocessing”中的“Pool”做了一个非常简单的并行工作示例。我想在同一时间启动多个查询。在
我激活了WAL模式,允许同时进行多个读/写操作。在
def FUNC1():
conn = sqlite3.connect("DB.db")
cur = conn.cursor()
cur.execute(QUERY1)
print "TEST"
cur.close()
conn.close()
return
def FUNC2():
conn = sqlite3.connect("DB.db")
cur = conn.cursor()
cur.execute(QUERY2)
cur.close()
conn.close()
return
if __name__ == '__main__':
conn = sqlite3.connect("DB.db")
cur = conn.cursor()
cur.execute('PRAGMA journal_mode=wal')
pool = Pool(processes=2)
pool.map_async(FUNC1,"")
pool.map_async(FUNC2,"")
cur.close()
conn.close()
终端应该显示一个print:“TEST”,它将显示例程执行了FUNC1操作。问题是它什么也没显示出来。在
有人知道为什么吗?在
编辑
我已经改了密码(谢谢“玛塔”!)现在的问题是没有并行工作。在
实际上,执行查询需要3秒,如果我传递三次同样的查询,最后的时间是9。。。在
为什么?在
^{pr2}$
^{} 调用函数一次,所提供的iterable的每个元素都作为参数。您提供了一个空的iterable(空字符串),因此函数永远不会被调用。^{} 可能就是你要找的。在
相关问题 更多 >
编程相关推荐