如何使用k()函数接收kdb/q中的数据?

本文关键字:数据 kdb 何使用 函数 | 更新日期: 2023-09-27 18:01:28

使用c#接口中的c.cs接口,我如何使用k()函数从长时间运行的计算中接收数据?

我想做的是

conn.ks("compute_long_running_function[]");

做点别的

results=conn.k();//wait for data

但是,后一个调用不会返回最后一个结果——它会无限期超时,除非事先设置了/T {N}

是否有一种方法将数据从服务器发送到正在等待它的客户端?没有参数的k()函数还能怎么用呢?

请注意,这个问题也适用于java接口,它们几乎相同。

如何使用k()函数接收kdb/q中的数据?

k()函数将阻塞,直到它接收到来自远程套接字的数据。如果你的函数是这样的:

compute_long_running_function:{[] r:til 1000; neg[.z.w] r }

函数结果将通过环回连接发送,并由connect .k()检索

你也可以这样做:

results=conn.k("compute_long_running_function[]");

,它将在函数的结果准备好时返回。但是你可能已经知道了。

问候,大卫

如果您调用ks,则函数的返回值将被忽略,并且您不能使用k()来检索它。

您只使用k()来接收q进程显式发送给您的数据,@David通过使用客户端句柄的否定方式显示。