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

How do I use the k() function to receive data in kdb/q

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

我想做的是

conn.ks("compute_long_running_function[]");

做点别的事

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

但是,后一个调用不会 return 最后的结果 -- 它会无限期地超时,除非事先设置 /T {N}

有没有办法将数据从服务器发送到等待它的客户端?否则如何使用不带参数的 k() 函数。

请注意,此问题也适用于 java 界面,几乎完全相同。

k() 函数将阻塞,直到它从远程套接字接收到数据。因此,如果您的函数如下所示:

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

函数结果将通过环回连接发送并由 conn.k()

检索

另一种方法是你只做:

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

这将 return 函数准备就绪后的结果。但你可能已经知道了。

此致,

大卫

如果您调用 ks,您函数的 return 值将被忽略,您无法使用 k() 检索它。

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