第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 Erlport 執(zhí)行的函數(shù)停止響應(yīng)

通過 Erlport 執(zhí)行的函數(shù)停止響應(yīng)

富國滬深 2023-10-31 14:33:44
我正在寫我的論文申請。我需要線性編程,但我的應(yīng)用程序是用 Elixir 編寫的,這實際上不是用于此類操作的語言。這就是為什么我決定使用 Erlport 作為 Elixir 依賴項,它能夠?qū)?Python 代碼與 Elixir 連接起來。我還使用 Pulp 作為優(yōu)化的 python 庫。Elixir 版本:1.10.4,Erlport 版本:0.10.1,Python 版本:3.8.5,PuLP 版本:2.3我為 Elixir-Python 通信編寫了這樣一個模塊,它利用 GenServer 作為 Elixir 和 Python 之間的主要“通信中心”:defmodule MyApp.PythonHub do  use GenServer  def start_link(_) do    GenServer.start_link(__MODULE__, nil, name: __MODULE__)  end  def init(_opts) do    path = [:code.priv_dir(:feed), "python"]          |> Path.join() |> to_charlist()    {:ok, pid} = :python.start([{ :python_path, path }, { :python, 'python3' }])    {:ok, pid}  end  def handle_call({:call_function, module, function_name, arguments}, _sender, pid) do    result = :python.call(pid, module, function_name, arguments)    {:reply, result, pid}  end  def call_python_function(file_name, function_name, arguments) do    GenServer.call(__MODULE__, {:call_function, file_name, function_name, arguments}, 10_000)  endend對 GenServer 本身的調(diào)用如下所示:PythonHub.call_python_function(:diets, python_function, [products_json, meal_statistics_json, @min_portion, @max_portion, @macro_enhancement])其中python_function是:calculate_meal_4,products_json和meal_statistic_json是包含所需數(shù)據(jù)的 json。通過python3 Diets.py調(diào)用calculate_meal_4時,它啟動了上面的python腳本,并帶有一些示例,但是真實的(取自應(yīng)用程序),數(shù)據(jù)一切正常 - 我?guī)缀鹾芸炀偷玫搅俗钚』慕Y(jié)果。通過 Elixir Erlport 調(diào)用 python 腳本時出現(xiàn)問題??纯创蛴〉妮敵?,我可以看出它似乎一直有效,直到solved_model = model.solve()叫做。然后腳本似乎凍結(jié)了,GenServer 最終達到了GenServer.call函數(shù)的超時。我還測試了一個簡單的 python 測試文件的調(diào)用:def pass_var(a):  print(a)  return [a, a, a]效果很好。這就是為什么我現(xiàn)在真的很困惑,我正在尋求任何建議。遺憾的是我還沒有發(fā)現(xiàn)什么。
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻1821條經(jīng)驗 獲得超5個贊

嗯,調(diào)用外部求解器可能會凍結(jié)該過程。

鑒于您可以使用 elixir 執(zhí)行 bash 腳本,您可以輕松地將 python 腳本更改為命令行可執(zhí)行文件(我建議單擊)。然后,您可以將輸出寫入.json.csv文件,并在完成后使用 Elixir 將其讀回。

@click.group()

def cli():

? ? pass


@cli.command()

@click.argument('products_json', help='your array of products')

@click.argument('diet_json', help='your dietary wishes')

@click.option('--lower-bound', default=0, help='your minimum number of desired calories')

@click.option('--upper-bound', default=100, help='your maximum number of desired calories')

@click.option('--enhance', default=False, help="whether you'd like to experience our enhanced experience")

def calculate_meal_4(products_json, diet_json, lower_boundary, upper_boundary, enhance):

? ? pass


if __name__ == '__main__':

? ? cli()

然后您可以使用python3 my_file.py <products_json> <diet_json> ...等等來調(diào)用它。

您甚至可以驗證 JSON,然后直接返回解析后的數(shù)據(jù)。


查看完整回答
反對 回復(fù) 2023-10-31
  • 1 回答
  • 0 關(guān)注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號