如果它不存在,我想在ets中创建一个表。如何检查此命名是否存在?
答案 0 :(得分:6)
您可以使用:ets.whereis/1
。如果命名表不存在,它将返回:undefined
:
iex(1)> :ets.new :foo, [:named_table]
:foo
iex(2)> :ets.whereis :foo
#Reference<0.2091350666.119668737.256142>
iex(3)> :ets.whereis :bar
:undefined
答案 1 :(得分:0)
如果您使用的是旧版的Erlang,则可以创建查找功能:
def lookup(server, name) do
case :ets.lookup(server, name) do
[{^name, pid}] -> {:ok, pid}
[] -> :error
end
end
信息取自:https://elixir-lang.org/getting-started/mix-otp/ets.html
答案 2 :(得分:0)
这应该可以解决问题:
Indexing Python object not allowed without gil