TL; TR:请转到最后一部分告诉我你将如何解决这个问题.
我今天早上开始使用Golang来自Python.我想从Go调用一个闭源可执行文件几次,带有一点并发性,使用不同的命令行参数.我生成的代码工作正常,但我想得到你的输入以改进它.由于我处于早期学习阶段,我还将解释我的工作流程.
为简单起见,这里假设这个"外部闭源程序"是zenity一个Linux命令行工具,可以从命令行显示图形消息框.
所以,在Go中,我会这样:
package main
import "os/exec"
func main() {
cmd := exec.Command("zenity", "--info", "--text='Hello World'")
cmd.Run()
}
Run Code Online (Sandbox Code Playgroud)
这应该是正常的.注意,这.Run()是一个功能等同于.Start()后面跟着.Wait().这很棒,但如果我只想执行一次这个程序,整个编程的东西就不值得了.所以,让我们多次这样做.
现在我有了这个工作,我想用自定义命令行参数多次调用我的程序(这里只是i为了简单起见).
package main
import (
"os/exec"
"strconv"
)
func main() {
NumEl := 8 // Number of times the external program is called
for i:=0; i<NumEl; i++ {
cmd := exec.Command("zenity", "--info", "--text='Hello from iteration n." + strconv.Itoa(i) + "'")
cmd.Run()
}
}
Run Code Online (Sandbox Code Playgroud)
好的,我们做到了!但我仍然看不到Go over …
我可以使用多少goroutines无痛?例如维基百科说,在Erlang中,可以创建2000万个进程,而不会降低性能.
更新:我刚刚调查了goroutines性能并得到了这样的结果: