如何解决多进程q的启动脚本
我正在尝试使用多个进程来启动kdb,以用于与KDB开发人员一起编写脚本。 我了解需要在主流程之外进行设置的流程。
我尝试使用.bashrc中的一个函数来执行此操作,该函数创建7个实例,预计最多8个进程。然后,我与开发人员一起开始最后的过程。 当我这样做并尝试连接时,我的操作系统会通知开发人员连接被拒绝。 您能否建议在KDB中启动与IPC一起使用的8个进程的正确方法? 这是我在.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进程时使用&:
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
,
要连接到q进程,应使用hopen。 在q会话中:
q){hopen("::",string[20000+x])}each 1+til 7
6 7 8 9 10 11 12i
它返回每个进程的句柄。 我们可以利用这些句柄为每个进程发送命令。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。