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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

富國(guó)滬深 2023-10-31 14:33:44
我正在寫我的論文申請(qǐng)。我需要線性編程,但我的應(yīng)用程序是用 Elixir 編寫的,這實(shí)際上不是用于此類操作的語(yǔ)言。這就是為什么我決定使用 Erlport 作為 Elixir 依賴項(xiàng),它能夠?qū)?Python 代碼與 Elixir 連接起來。我還使用 Pulp 作為優(yōu)化的 python 庫(kù)。Elixir 版本:1.10.4,Erlport 版本:0.10.1,Python 版本:3.8.5,PuLP 版本:2.3我為 Elixir-Python 通信編寫了這樣一個(gè)模塊,它利用 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對(duì) 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時(shí),它啟動(dòng)了上面的python腳本,并帶有一些示例,但是真實(shí)的(取自應(yīng)用程序),數(shù)據(jù)一切正常 - 我?guī)缀鹾芸炀偷玫搅俗钚』慕Y(jié)果。通過 Elixir Erlport 調(diào)用 python 腳本時(shí)出現(xiàn)問題。看看打印的輸出,我可以看出它似乎一直有效,直到solved_model = model.solve()叫做。然后腳本似乎凍結(jié)了,GenServer 最終達(dá)到了GenServer.call函數(shù)的超時(shí)。我還測(cè)試了一個(gè)簡(jiǎn)單的 python 測(cè)試文件的調(diào)用:def pass_var(a):  print(a)  return [a, a, a]效果很好。這就是為什么我現(xiàn)在真的很困惑,我正在尋求任何建議。遺憾的是我還沒有發(fā)現(xiàn)什么。
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

嗯,調(diào)用外部求解器可能會(huì)凍結(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)用它。

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


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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