ruby 多線程及查看程序運行情況

每個正在系統上運行的程序都是一個進程。每個進程包含一到多個線程。
線程是程序中一個單一的順序控制流程,在單個程序中同時運行多個線程完成不同的工作,稱爲多線程。
Ruby 中我們可以通過 Thread 類來創建多線程,Ruby的線程是一個輕量級的,可以以高效的方式來實現並行的代碼。

def function1
    i = 0
    while i<=50
        puts "func1 at : #{Time.now}"
        sleep(2)
        i=i+1
    end
end

def function2
    j = 0
    while j<=50
        puts "func2 at : #{Time.now}"
        sleep(1)
        j=j+1
    end
end
start = Time.now
t1 = Thread.new{function1}
t2 = Thread.new{function2}
t1.join
t2.join

end_time = Time.now
puts "used :"+(end_time-start).to_s

查看程序運行佔用cpu情況:top -p $(pgrep ruby)
這裏寫圖片描述


pstack查看進程所有線程的執行棧,裏面有當前執行到哪一個函數, 函數的調用關係等:pstack $(pgrep ruby)
這裏寫圖片描述


查看程序進程樹:pstree -p pid
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章