gpt4 book ai didi

ruby - 如何在单独的进程中运行代码?

转载 作者:数据小太阳 更新时间:2023-10-29 08:04:50 26 4
gpt4 key购买 nike

我正在寻找一种解决方案,以在单独的进程中生成 block 或 Proc 中定义的代码。有点像

p = Proc.new do
File.open('newproc.log', 'w') {
|fw|
10.times do
fw.puts Time.now
sleep 1
end
}
end

# spawn p in a separate process here

# original code continues

没有进程 fork ,没有线程,没有存储在外部文件中。只需在独立进程中执行该 block 。

有什么想法吗?

更新:我必须添加该 block 不依赖于调用过程中定义的任何内容。

最佳答案

在基于 Unix 的系统上,fork(3) 是创建新进程的唯一途径。您必须具备 fork 的能力才能完成您所描述的内容。

如果您因为父进程“胖”并占用大量内存而试图避免 fork ,您可以通过使用实现 Ruby 2.0 的 Ruby 版本(例如 Copy-on-Write )来避免重复内存。线程使用的内存比单独的进程少得多,因此线程当然值得考虑。

编辑

使用 fork 的解决方案可能如下所示:

p = Proc.new do
File.open('newproc.log', 'w') {
|fw|
10.times do
fw.puts Time.now
sleep 1
end
}
end

# spawn p in a separate process here
fork { p.call }

# original code continues

关于ruby - 如何在单独的进程中运行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15758241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com