我想在延迟之后向进程发送消息并发现erlang:send_after/4.
在查看文档时,它看起来就像我想要的那样:
erlang:send_after(Time, Dest, Msg, Options) -> TimerRef启动计时器.当计时器到期时,消息Msg被发送到由Dest标识的进程.
但是,当目标在另一个节点上运行时它似乎不起作用 - 它告诉我其中一个参数是坏的.
1> P = spawn('node@host', module, function, [Arg]).
<10585.83.0>
2> erlang:send_after(1000, P, {123}).
** exception error: bad argument
in function erlang:send_after/3
called as erlang:send_after(1000,<10585.83.0>,{123})
Run Code Online (Sandbox Code Playgroud)
做同样的事timer:send_after/3似乎工作正常:
1> P = spawn('node@host', module, function, [Arg]).
<10101.10.0>
2> timer:send_after(1000, P, {123}).
{ok,{-576458842589535,#Ref<0.1843049418.1937244161.31646>}}
Run Code Online (Sandbox Code Playgroud)
而且,文档的timer:send_after/3状态几乎是同样的事情erlang版本:
send_after(Time, Pid, Message) -> {ok, TRef} | {error, Reason}评估Pid!时间毫秒后的消息.
所以问题是,为什么这两个函数在表面上做同样的事情时表现不同?被erlang:send_after打破,或错误广告?或者可能timer:send_after没有做我认为的事情?
ModelingToolkit.jl这是一个非常棒的软件包,以至于我经常对它抱有过高的期望。例如,我经常发现自己的模型可归结为以下内容:
@variables t x(t) y(t)
@parameters a b C
d = Differential(t)
eqs = [
d(x) ~ a * y - b * x,
d(y) ~ b * x - a * y,
0 ~ x + y - C
]
@named sys = ODESystem(eqs)
Run Code Online (Sandbox Code Playgroud)
现在,我知道我可以通过替换 来将其简化为一个方程0 ~ x + y - C。但实际上,我的系统要大得多、不那么琐碎并且是通过编程生成的,所以我想ModelingToolkit.jl为我自己做这件事。
我尝试过使用structural_simplify,但额外的方程会妨碍:
julia> structural_simplify(sys)
ERROR: ExtraEquationsSystemException: The system is unbalanced. There are 2 highest order derivative variables and …Run Code Online (Sandbox Code Playgroud) 如果我评估如下:
numpy.random.choice(2, size=100000, p=[0.01, 0.99])
使用一个均匀分布的随机数float,例如r,并决定是否r < 0.01会浪费许多生成的随机位(熵)。我听说(二手)生成伪随机数的计算成本很高,所以我认为numpy不会这样做,而是会在这种情况下使用算术编码之类的方案。
然而,乍一看似乎确实为它所要求的每个样本choice生成了一个。float此外,快速timeit实验表明,生成均匀浮点数实际上比 中的样本n更快。np=[0.01, 0.99]
>>> timeit.timeit(lambda : numpy.random.choice(2, size=100000, p=[0.01, 0.99]), number=1000)
1.74494537999999
>>> timeit.timeit(lambda : numpy.random.random(size=100000), number=1000)
0.8165735180009506
Run Code Online (Sandbox Code Playgroud)
真的会像看起来那样为每个样本choice生成一个吗?在某些情况下(特别是当数据很大且分布不均匀时),float使用某种压缩算法不会显着提高性能吗?如果没有,为什么不呢?sizep
erlang ×1
erlang-otp ×1
julia ×1
modeling ×1
numpy ×1
performance ×1
python ×1
python-3.x ×1
random ×1