kdb q - 从子进程扩展表

我有一个昂贵的功能

mainfunc:{[batch;savepath] 
     ...compute large table depending on batch and save it to savepath...
}

复制到从属进程,每个进程处理函数的不同 batch 输入 .
假设我需要在 input:til 1000 上执行该函数,然后进程1执行 mainfunc[input[til 50];savepath] ,进程2执行 mainfunc[input[50+til 50]] . 因为它们是进程而不是保存到文件的线程是可能的 .

我试图避免线程的原因是 mainfunc 的输出是一个大表,如果表被发送到主进程并从那里保存,将会有很多序列化开销 .

现在我遇到了我想在每个进程中展开大表的限制 . 但是,splaying(在带符号的表的情况下)需要修改为枚举保留的 sym 文件,并且只要有2个进程试图访问该 sym 文件,我就会得到异常 . 我喜欢用的东西

splaydirname set .Q.en[hsym `$savepath] largetable; / .Q.en locks the sym file enumeration is done

我该如何解决这个问题?

谢谢您的帮助

回答(0)