在启动后,是否可以在注册表(:poolboy
或:gproc
elixir 1.4中)注册Registry
池?
我需要在池上的pub / sub架构上实现某种类型。我想在同一个别名下注册多个池。
Registry
有:duplicate
,:gproc
有:p
,但看起来它们都不适用于:via
元组,所以我无法使用它在我游泳池的name
。
答案 0 :(得分:4)
看起来df = pd.DataFrame(dict(
A=np.arange(8),
B=list('wxyz') * 2
))
dof = dict(
w=lambda j: j + 2,
x=lambda j: j ** 2 - 1,
y=lambda j: math.sin(j),
z=lambda j: abs(math.log2(j))
)
df.apply(lambda x: dof[x.B](x.A), 1)
0 2.000000
1 0.000000
2 0.909297
3 1.584963
4 6.000000
5 24.000000
6 -0.279415
7 2.807355
dtype: float64
只允许在给定名称下注册当前进程。
因此,要使用注册表,您需要启动一个流程来充当每个Poolboy池的代理,例如Registry
模块GenServer
。
PoolProxy
注册后,您可以使用
将pub-sub发送到代理进程defmodule PoolProxy do
use GenServer
def init(poolname) do
{:ok, _} = Registry.register(Registry.PoolPubSub, "PoolPubSub", nil)
{:ok, poolname}
end
def handle_call(:notify_pool, _from, poolname) do
# interact with poolboy pool here...
end
end