Tag: 进程

如何异步收集在ruby中实时创建的新线程的结果

我想继续检查数据库中的表以查找要运行的命令。 某些命令可能需要4分钟才能完成,大约10秒钟。 因此我想在线程中运行它们。 因此,每条记录都会创建新线程,并在创建线程后删除记录。 因为DB查找+线程创建将在无限循环中运行,我如何从线程获取’响应’(线程将发出shell命令并获取我想要阅读的响应代码)? 我想过创建两个带有无限循环的Thread: – 首先是DB查找+创建新线程 – 第二个是…以某种方式读取线程结果并对每个响应进行操作 或者也许我应该使用fork,或者os生成一个新进程?

通过ruby进程共享变量

我正在写一个gem,我必须分叉两个进程,这两个进程启动两个webrick服务器。 我想通过基类中的类方法启动此服务器,因为应该只运行这两个服务器,而不是多个服务器。 在运行时,我想在这两个服务器上调用一些方法来更改变量。 我的问题是,我无法通过基类的类方法访问forks的实例变量。 此外,我不能在我的基类中使用线程,因为我在使用另一个非线程安全的库。 所以我必须将每个服务器分配给它自己的进程。 我用类变量尝试了它,比如@@server 。 但是当我尝试通过基类访问这些变量时,它是nil 。 我读过Ruby中不可能在forks中共享类变量,对吗? 那么,还有其他方法吗? 我想过使用单身,但我不确定这是不是最好的主意。

Ruby进程中的共享变量

我有一个Ruby程序,可以加载两个非常大的yaml文件,所以我可以通过分离一些进程来利用多个核心来获得一些加速。 我试过看,但是我无法弄清楚如何,或者即使我可以在不同的进程中共享变量。 以下代码是我目前拥有的代码: @proteins = “” @decoyProteins = “” fork do @proteins = YAML.load_file(database) exit end fork do @decoyProteins = YAML.load_file(database) exit end p @proteins[“LVDK”] 由于叉子, P显示为零。 那么分叉进程可以共享变量吗? 如果是这样,怎么样?

ruby超时和系统命令

我有一个ruby超时,调用这样的系统(bash)命令.. Timeout::timeout(10) { `my_bash_command -c12 -o text.txt` } 但我认为即使ruby线程被中断,实际命令仍然在后台运行..这是正常的吗? 我怎么能杀了它?