- ·上一篇文章:Julia 交互
- ·下一篇文章:Julia 调用 C 和 Fortran 代码
Julia 运行外部程序
erl -le '$|=1; for(0..9){ print; sleep 1 }'` |> prefixer("A",2) & prefixer("B",2)) A 0 B 1 A 2 B 3 A 4 B 5 A 6 B 7 A 8 B 9这是一个单生产者双并发消费者的经典例子:一个 perl 进程生产从 0 至 9 的 10 行数,两个并行的进程消费这些结果,其中一个给结果加前缀 “A”,另一个加前缀 “B”。我们不知道哪个消费者先消费第一行,但一旦开始,两个进程交替消费这些行。(在 Perl 中设置 $|=1 ,可使打印表达式先清空 stdout 句柄;否则输出会被缓存并立即打印给管道,结果将只有一个消费者进程在读取。)再看个更复杂的多步的生产者-消费者的例子: julia> run(`perl -le '$|=1; for(0..9){ print; sleep 1 }'` |> prefixer("X",3) & prefixer("Y",3) & prefixer("Z",3) |> prefixer("A",2) & prefixer("B",2)) B Y 0 A Z 1 B X 2 A Y 3 B Z 4 A X 5 B Y 6 A Z 7 B X 8 A Y 9此例和前例类似,单有消费者分两步,且两步的延迟不同。强烈建议你亲手试试这些例子,看看它们是如何运行的。
Julia 运行外部程序