多进程 q 的启动脚本

startup script for multiprocess q

我正在尝试使用多个进程启动 kdb 以用于与 KDB 开发人员一起编写脚本。 我了解设置的流程需要在主流程之外完成。

我试图用我的 .bashrc 中的一个函数来做到这一点,它创建了 7 个实例,这些实例最多需要 8 个进程。然后我开始与开发人员进行最后的流程。 当我这样做并尝试连接时,我的 OS 通知开发人员连接被拒绝。 您能否建议在 KDB 中启动 8 个进程以与 IPC 一起使用的正确方法? 这是我在 .bashrc 中的多进程启动函数:

mq() {
    echo "Spawning 7 q processes";
    q -s -8 -p 20001;
    q -s -8 -p 20002;
    q -s -8 -p 20003;
    q -s -8 -p 20004;
    q -s -8 -p 20005;
    q -s -8 -p 20006;
    q -s -8 -p 20007;
}

这是 .bashrc 中启动开发人员的代码:

# Assumes user name is claude and opens Q with 8 threads. (to build separate processes use a negative number) 
alias q='rlwrap -r q -s -8'
# Developer set to open with 8 threads. (to build separate processes use a negative number)
alias developer='source /pathToDir/developer/config/config.profile; rlwrap -r q /pathToDir/developer/launcher.q_'

为了开始这一切,我打开一个终端并输入 mq 然后打开另一个终端并输入 developer 在开发人员中,我为每个进程分配一个句柄,如下所示: {hopen("::",string[20000+x])}each 1+til 7 然后系统告诉我连接被拒绝

我应该怎么做?

感谢和问候,

要连接到 q 进程,应该使用 hopen。 在 q 会话中:

q){hopen("::",string[20000+x])}each 1+til 7
6 7 8 9 10 11 12i

它returns 处理每个进程。 我们可以利用这些句柄为每个进程发送命令。

我认为您应该在 shell 脚本中启动多个 q 进程时使用 &:

mq() {
            echo "Spawning 7 q processes";
                q -s -8 -p 20001 &
                    q -s -8 -p 20002 &
                        q -s -8 -p 20003 &
                            q -s -8 -p 20004 &
                                q -s -8 -p 20005 &
                                    q -s -8 -p 20006 &
                                        q -s -8 -p 20007 &
                                }
mq

如果没有 &,一次只会打开 1 个进程。 它对我有用: ./mq.sh

bchen@homer:~$ ./mq.sh 
Spawning 7 q processes
q)q)q)q)q)q)

在 q 会话中:

q){hopen("::",string[20000+x])}each 1+til 7
4 5 6 7 8 9 10i