使用 htop 命令可视化 ruby 线程
Posted
技术标签:
【中文标题】使用 htop 命令可视化 ruby 线程【英文标题】:Visualizing ruby threads with htop command 【发布时间】:2019-09-20 21:34:33 【问题描述】:我正在试验 ruby 中的多线程。我运行了这段同时运行 3 个线程的代码(终端中的ruby threads.rb
):
arr = []
arr.push(Thread.new do
1000000.times do |i|
puts "thread 1"
end
end)
arr.push(Thread.new do
1000000.times do |i|
puts "thread 2"
end
end)
arr.push(Thread.new do
1000000.times do |i|
puts "thread 3"
end
end)
arr.each |t| t.join
我现在在终端的树形视图中运行 htop
以查看是否真的可以看到 3 个不同的线程:
我认为threads.rb 进程是突出显示的线程正下方的行,但我无法将我的三个启动线程视为threads.rb 进程的分支。 ruby 线程与 htop 显示的线程和进程无关吗?有没有办法可视化在我的 threads.rb 进程中运行的不同 ruby 线程。
【问题讨论】:
【参考方案1】:这取决于您的 Ruby 解释器。 MRI 应该为每个 Ruby 线程分配一个本地线程。我已经运行了你的脚本,我可以看到 htop
中的线程(线程超过 3 个,但这一定是解释器所做的):
尝试在htop
中设置过滤器(点击F4
并输入ruby
作为过滤器字符串)。
编辑:我已经在 Debian 上进行了测试。 MacOS 上的htop
显然不显示线程。
【讨论】:
您正在运行什么操作系统和 Ruby 解释器?我在 MacOS 10.14.3 上并在 MRI 上进行了测试,没有看到本机线程。 不,只看到一个 ruby threads.rb 进程,它似乎是 atom 的子进程。我也在 MRI 上运行 macos 10.14.4 哦,好的——我在 Debian 上。似乎htop
没有在 OSX 上显示线程:github.com/hishamhm/htop/issues/552 - 有一个 PR 打开,但它没有合并。见***.com/questions/28047653/…,HTH。以上是关于使用 htop 命令可视化 ruby 线程的主要内容,如果未能解决你的问题,请参考以下文章