Elixir簡單的wordcount小程式
簡單的小練習 程式碼中用三個erlang程式模擬mapper 一個程式模擬reducer
程式碼不難 只是簡單模擬了下 有興趣的可以看看^_^
defmodule Wordcount do
@moduledoc "simple wordcount program by fairjm@ituring"
@nodecount 3
def start(file) do
s = self
spawn(fn -> count(file,s) end)
end
defp count(file,caller) do
s = self
nodes = Enum.map(1..@nodecount,fn _e -> spawn(fn -> countLine end) end)
count = File.stream!(file)
|> Enum.reduce(0,fn e,r -> send(Enum.at(nodes,:random.uniform(@nodecount)-1),{e,s});r+1 end)
IO.puts("total count is #{count}")
v = countDown(count,%{})
nodes |> Enum.each(&(send(&1,Stop)))
send(caller,v)
end
defp countDown(0,m) do
IO.puts("ending")
m
end
defp countDown(n,m) do
receive do
map -> countDown(n-1, Enum.reduce(map,m,fn {k,v},r -> Map.put(r,k,Map.get(r,k,0)+v) end))
after 5000 -> countDown( n-1 , m)
end
end
defp countLine do
receive do
{line,caller} ->
IO.puts("#{inspect(self)} is doing work")
m = line
|> String.strip
|> String.split(" ")
|> Stream.filter(&(String.length(&1) > 0))
|> Enum.reduce(%{},fn e,r ->
case r[e] do
nil -> Map.put(r,e,1)
v -> Map.put(r,e,v+1)
end
end
)
send(caller,m)
countLine
Stop ->
IO.puts("#{inspect(self)} quits")
_other ->
IO.puts("error message")
countLine
end
end
end
相關文章
- 使用 Elixir 實現簡單的文字識別程式
- Elixir 簡介
- 建立一個簡單的小程式
- 小程式 – 簡單入門
- 原生小程式最最簡單的分享功能
- 簡單的小程式小結, 瞭解一下
- 小程式的生命週期函式(簡單易懂)函式
- Spring Boot + DD小程式 超級簡單的webscoketSpring BootWeb
- 簡單-定義一個小程式元件元件
- 小程式簡單實現表格佈局
- 02.Flink的單機wordcount、叢集安裝
- 微信小程式wx.request的簡單封裝微信小程式封裝
- java實現一個簡單的爬蟲小程式Java爬蟲
- Storm的wordcount程式碼編寫與分析ORM
- 小程式wx.request()方法簡單封裝封裝
- MapReduce 程式設計模型 & WordCount 示例程式設計模型
- WordCount
- JavaScript 簡單/不簡單 (小Tips分享)JavaScript
- 微信小程式之簡單開發操作(一)微信小程式
- axios簡單實現小程式延時loading指示iOS
- Android 酒店客房管理簡單小程式Android
- 簡單講講小程式外掛是什麼
- Erlang/Elixir 中的 OTP 程式設計介紹程式設計
- 一款簡單好用的微信小程式商城原始碼微信小程式原始碼
- 仿寫一個簡單的微信小程式(番茄鬧鐘)微信小程式
- Python訪問小程式簡單方法程式碼例項詳解Python
- [elixir! #0078] elixir 版本升級的歷程(1.11 -> 1.12)
- 對Tomcat的簡單概要小結Tomcat
- 很簡單的Flutter填小坑Flutter
- 簡單的爬蟲程式爬蟲
- python手機版做小遊戲程式碼大全-python簡單小遊戲程式碼 怎麼用Python製作簡單小遊戲...Python遊戲
- 強烈推介的幾個微信小程式開發小技巧,簡單又實用微信小程式
- 「小程式JAVA實戰」小程式的表單元件(25)Java元件
- SimpleDateFormat.format的簡單使用小結ORM
- 微信小程式簡單封裝圖片上傳元件微信小程式封裝元件
- 原來不懂程式碼的人也可以開發簡單的小應用
- 微信小程式教程01:小程式簡介微信小程式
- Python Selenium的簡單演示程式Python
- 簡單的程式碼生成工具