多进程 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
我正在尝试使用多个进程启动 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