kdb+并行计算(3)

我们在“kdb+并行计算(1)”和“kdb+并行计算(2)”聊了多线程并行计算和多进程并行计算,那么,我们是否可以同时进行两种并行计算呢?当然是可以的。我们举一个稍“复杂”一些的简单例子:计算a*b, a=1,2,3, b=1,2,3,4,5,如下表所示:
在这里插入图片描述

要求:同一行计算在同一个q中进行,该行的每一列在不同的线程中计算。操作步骤如下:

操作步骤
1
第一步,启动一个主q和多个子q
启动主q:
set QHOME=d:\kdb\q
start d:\kdb\q\w32\q -s -3
(注意参数是-s -3不是-s 3)

启动3个子q,均启用多线程:
start “5501” d:\kdb\q\w32\q -p 5501 -s 5
start “5502” d:\kdb\q\w32\q -p 5502 -s 5
start “5503” d:\kdb\q\w32\q -p 5503 -s 5
(注意参数是 -s 5 不是 -s -5)
2
第二步,建立主q与子q之间的通信连接
在主q中执行:
.z.pd:`u#hopen each 5501 5502 5503
3
第三步,主q向子q分发计算任务
在主q控制台上运行:
{[a] -1 “a=”,string[a]; {[a;b] -1 string[a],"",string[b],"=",string[ab];a*b}[a] peach 1 2 3 4 5} peach 1 2 3

主q将返回:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15

子q 5501将显示:
a=1
11=1
1
2=2
13=3
1
4=4
1*5=5

子q 5502将显示:
a=2
21=2
2
2=4
23=6
2
4=8
2*5=10

子q 5503将显示:
a=3
31=3
3
2=6
33=9
3
4=12
3*5=15

注意:“a*b=x”的实际显示顺序与上面顺序会有所不同。

说明:本文经授权转载自微信公众号kdbcnbook。
kdbcn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值