问题描述
我目前正在设置服务器,并将功能和测试数据成功传递到该服务器。
是否有一种雄辩的方法来清除所有函数,变量,表等?因为我们在Docker容器中运行KDB并通过IP地址访问它,所以我不想不必在服务器上重新启动q会话,而是将许多/所有值和函数分配给::或null。
目前,我假设我必须将每个函数/变量/表重新分配给::或类似方法才能实现。这不是一个大问题,但我希望它具有许多功能。
\p 5042
h:hopen `:XXX.XXX.XX.XX:5042
h "sq:{x*x}" //send sample function sq to server
h "sq: ::" //assign function sq to nothing (repeat for all variables/functions/tables etc)
hclose h
//check the IP address list of functions to confirm deletion http://XXX.XXX.XX.XX:5042/?\f
解决方法
您能否向我们提供更多有关为什么要清除所有内容的信息(尤其是为什么要将函数设置为null)?
否则,您可以做一些事情。您可以在名称空间上执行delete语句以删除其中的所有内容。要删除全局名称空间中的所有表/变量/函数,可以执行以下操作。
q)a: 1
q)b: 1 2 3
q)f: {1 + x}
q)value `.
a| 1
b| 1 2 3
f| {1 + x}
q)delete from `.
`.
q)value `.
q)f
'f
[0] f
^
q)
如果要使它们为空而不是删除它们,则可以使用系统命令a,f和v获得全局(或)中所有表(a),函数(f)和变量(v)的列表。其他)名称空间,然后使用set
将它们全部设置为null。
q)f: {1+x}
q)g: {2*x}
q)(system"f")set'(::)
`f`g
q)f
q)g
q)
这大致就是您要寻找的吗?
(一个明显的问题是,您可能最终会删除其他人的变量。)
,要添加到Matt的点上很少:
.Q.gc []在执行此操作后可能是一个好主意。这会将所有内存返回给根名称空间中的那些变量正在使用的操作系统,例如如果您在此之前定义了一个大表。
在清除之后想要保留的功能使用替代名称空间,例如.utils。您甚至可以添加.utils.refresh函数,该函数清除根名称空间并运行.Q.gc []