Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parallel processing 菲尼克斯/长生不老药核心的使用,不能最大化_Parallel Processing_Erlang_Elixir_Phoenix Framework - Fatal编程技术网

Parallel processing 菲尼克斯/长生不老药核心的使用,不能最大化

Parallel processing 菲尼克斯/长生不老药核心的使用,不能最大化,parallel-processing,erlang,elixir,phoenix-framework,Parallel Processing,Erlang,Elixir,Phoenix Framework,我创建了一个简单的函数,可以将随机消息广播到一个频道。我曾尝试生成4-16个进程,但CPU使用率不会超过200%。我有8个核 defmodule Example do def listen do receive do {:ok, "rush"} -> sample_text = ["foo", "bar", "baz", "qux", "quux", "quuz"] h = Enum.take_random(sample_text,

我创建了一个简单的函数,可以将随机消息广播到一个频道。我曾尝试生成4-16个进程,但CPU使用率不会超过200%。我有8个核

defmodule Example do

  def listen do
    receive do
      {:ok, "rush"} ->
        sample_text = ["foo", "bar", "baz", "qux", "quux", "quuz"]
        h = Enum.take_random(sample_text, 1)
        MyApp.Endpoint.broadcast("topic", "message:new", %{body: Enum.at(h, 0, :default)})
    end

    listen()
  end
end

max = 16
list = Enum.flat_map (1..max), fn _ ->
  [spawn(Example, :listen, [])]
end

elem(:timer.tc(fn -> (1..1000000)|> Enum.each(fn x ->
  send Enum.at(list, rem(x, (max-1)), :default), {:ok, "rush"}
end)end, []),0) / 1000000
这是连接到我的SSD,这是瓶颈还是我不能最大限度地使用CPU

这就是我在启动phoenix时得到的

Erlang/OTP 19 [erts-8.3] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

它没有使用所有CPU的原因是我直接在控制台中定义了模块,而不是编译它们。一旦我这样做了,它就如预期的那样工作了:)

它没有使用所有CPU的原因是因为我直接在控制台中定义了模块,而不是编译它们。一旦我这么做了,它就如预期的那样成功了:)

你也尝试过生成多个发送者进程吗?@Dogbert我没有。“也许这样就行了?”多伯特:看看我的答案你也尝试过生成多个发送者进程吗?@Dogbert我没有。“也许这样就行了?”多伯特:看看我的答案