Python 使用自定义函数将dask包写入数据库
我正在dask bag上运行一个函数,将数据转储到NoSQL DB中,如:Python 使用自定义函数将dask包写入数据库,python,dask,Python,Dask,我正在dask bag上运行一个函数,将数据转储到NoSQL DB中,如: def写入数据库(x): #要写入数据库的代码 db.插入多个(x) 返回 def func(): #处理每个元素的代码 对于整数列中的列: 尝试: x[col]=int(x[col]) 除了(ValueError、TypeError): x[col]=无 将dask.bag作为数据库导入 bag=db.读取文本(…) bag=bag.map\u分区(csv.DictReader).map(func).map\u分区(写
def写入数据库(x):
#要写入数据库的代码
db.插入多个(x)
返回
def func():
#处理每个元素的代码
对于整数列中的列:
尝试:
x[col]=int(x[col])
除了(ValueError、TypeError):
x[col]=无
将dask.bag作为数据库导入
bag=db.读取文本(…)
bag=bag.map\u分区(csv.DictReader).map(func).map\u分区(写入数据库)
bag.compute()
现在,当我查看dask任务图时,在每个分区完成write_to_db函数后,它将显示为内存
,而不是已释放
我的问题是:
已发布
,即蓝色func()
是否释放了GIL
?有没有办法优化这种计算None
值作为内存中的结果,但是这些值很小,我不担心。您的compute()
的输出将是一组None
s(实际上,为了保持行李排列,您可能需要将其列为一个列表)dask.delayed
的版本可能具有相同的行数实际上,我想知道我们是否可以将
write\u to\u db
函数作为func的一种简化类型来传递。这样,我认为内存中的键会显示为released。您可能会打开“output”,但这取决于几个写函数,因此图形可能看起来更完整,但在所有操作完成之前,您仍然不会清除键。通常,这正是人们想要的。