首页 文章

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

提问于
浏览
3

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

我想做的是

conn.ks("compute_long_running_function[]");

做点别的

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

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

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

请注意,此问题也适用于几乎完全相同的java接口 .

2 回答

  • 3

    k()函数将阻塞,直到它从远程套接字接收数据 . 所以如果你的函数看起来像这样:

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

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

    另一种选择是:

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

    这将在函数准备好后返回函数的结果 . 但是你可能已经知道了 .

    问候,

    大卫

  • 1

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

    您只使用k()来接收 q 进程显式发送给您的数据,就像@David使用客户端句柄的否定一样 .

相关问题