虚拟多处理锁
Dummy multiprocessing lock
我试图在多个工作人员之间分散我的巨大 for 循环,但我遇到了这个错误:sqlite3.ProgrammingError:不允许递归使用游标。
我想我必须申请锁定。我该怎么做?
import multiprocessing.dummy as multiprocessing
con = sqlite3.connect('db.db', check_same_thread=False)
cur = con.cursor()
def paramlist():
for row in nodes.itertuples():
l = []
for row2 in ref_stops.itertuples():
l.append((row[1], row[2], row[3], row2[1],
row2[2], row2[3], row2[4], haversine(row[3], row[2], row2[3], row2[2])))
yield l
def func(params):
# nodes_ref_stop = pd.DataFrame(params)
cur.executemany('INSERT INTO stocks VALUES (?,?,?,?,?,?,?,?)', params)
con.commit()
pool = multiprocessing.Pool()
pool.map(func, paramlist())
您不能在不同的线程或进程之间共享游标。每个进程必须使用自己的游标。
我试图在多个工作人员之间分散我的巨大 for 循环,但我遇到了这个错误:sqlite3.ProgrammingError:不允许递归使用游标。
我想我必须申请锁定。我该怎么做?
import multiprocessing.dummy as multiprocessing
con = sqlite3.connect('db.db', check_same_thread=False)
cur = con.cursor()
def paramlist():
for row in nodes.itertuples():
l = []
for row2 in ref_stops.itertuples():
l.append((row[1], row[2], row[3], row2[1],
row2[2], row2[3], row2[4], haversine(row[3], row[2], row2[3], row2[2])))
yield l
def func(params):
# nodes_ref_stop = pd.DataFrame(params)
cur.executemany('INSERT INTO stocks VALUES (?,?,?,?,?,?,?,?)', params)
con.commit()
pool = multiprocessing.Pool()
pool.map(func, paramlist())
您不能在不同的线程或进程之间共享游标。每个进程必须使用自己的游标。