Parallel processing แบบง่าย ๆ ใน Ruby

ขั้นแรกเลยคือลง gem นี้ก่อน Parallel แบบชื่อตรงมาก พอลงแล้วเขียนอะไรประมาณนี้ได้เลย


require 'parallel'
a_mul_10 = Parallel.map([1,2,3,4,5]) {|elem| elem + 10}

หรือถ้าอยากให้มันเยอะ ๆ หน่อยจะได้ top ดูทันว่าใช้กี่ core แล้วก็สั่งแบบ


require 'parallel'
a_mul_10 = Parallel.map(0..1000000) {|elem| elem + 10}

ก็ได้

ผมอยากจะเขียน client ไปเรียก API แบบพร้อมกัน เพราะประมาณว่าเขียนแบบธรรมดาช้าใช้ CPU ได้แค่ 23% ของ 1 core ก็เลยจัดไปประมาณนี้ (ตัดรายละเอียดออกแล้ว)


Parallel.each(id_orgs, in_processes: 4) do |id|
   metadata = get_metadata(api_key, id)
   metadata = do_sth(metadata)
   send_metadata(api_key, metadata)
end

ผลคือแค่ใช้ 2 processor นี่ server ก็ไม่ไหว เพิ่มเป็น 16 นี่ถึงกับเว็บหลักเดี้ยงไปเลย T_T

Advertisements
This เรื่อง was posted in ไม่มีหมวดหมู่. Bookmark the permalink.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s