問題タブ [agents]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - Clojure - エージェントを使用すると実行が遅くなりすぎる
Clojure でプログラムのベンチマークを書いています。n
同時にキャッシュにアクセスするスレッドがあります。各スレッドはキャッシュx
時間にアクセスします。各リクエストは、ファイル内に記録する必要があります。
この目的のために、書き込み先のファイルへのパスを保持するエージェントを作成しました。書きたいときは send-off
、ファイルに書き込み、単にパスを返す関数を書きます。このようにして、私のファイル書き込みは競合状態から解放されます。
エージェントなしでコードを実行すると、数ミリ秒で終了しました。エージェントを使用すると、コードの実行が非常に遅くなるたびに、各スレッドにエージェントに送信するように依頼します。私は議事録を話している。
(barrier/run-with-barrier)
コードは単純に複数のスレッドを生成しusercount
、それらを同時に開始します (atom を使用)。私が渡す関数は、各スレッドの本体です。
store-data
本文は、キーと値のリストであるという名前のリストに単純にマップされます (例: {:a 1 :b 2}
。現在、コード内のこのリストの長さは 10 です。ユーザーの数も 10 です。
ご覧のとおり、エージェント見送りのコードはコメントアウトされています。これにより、コードが正常に実行されます。ただし、送信を有効にすると、ファイルに書き込まなくても実行時間が遅すぎます。
編集:
彼がエージェントに送信する前に、各スレッドにドットを印刷しました。ドットは見送りがない場合と同じくらい速く表示されます。したがって、最終的には何かがブロックする必要があります。
私は何か間違ったことをしていますか?
logging - Clojure で正しく非同期にログを記録するために、エージェントと core.async をどのように使用しますか?
次のコードでは、チャネルをリッスンし、読み取った値をエージェントに書き込む go ループを使用しています。次に、同じループで、log-to-file 関数がエージェントの各項目をファイルに書き込むことになっています。ただし、[8 6 5 13] のエージェントの内容が 865n13 としてファイルに吐き出される可能性があるため、ファイルへの出力は異常です。ロガー関数からログからファイルへの呼び出しを削除して個別に呼び出すと、ファイル出力がうまくいく場合とそうでない場合があります。誰かが私に何が起こっているのかを説明し、一貫した動作を示す安全な方法を教えてもらえますか? 一貫した動作を実現するには、エージェントを使用しないことがおそらく最善の方法であることは承知しています。学習の精神で、エージェントで達成できることとできないことを知りたいだけです。よろしくお願いします!
編集:
これは、以下の受け入れられた回答のコメントに照らして書き直されたコードです。このコードを使用することはまったくお勧めしません。さらに言えば、副作用のある go ループでエージェントを使用することもお勧めしません。
java - Java: 別のクラスの新しい変数として XML 値にアクセスする
Java プログラミング
クラス WeatherAgent があります。このクラスの機能は、World weather online の URL (XML コード) から現在の温度値とその他のパラメーターを取得することです。
私の主な質問は次のとおりです。クラス WeatherAgent で生成された温度値を別のクラス (ボイラー) に取得する方法は? したがって、クラス WeatherAgent の XML 値に、別のクラス (クラス Boiler) の新しい変数としてアクセスします。
クラス Boiler にこのメソッドがあり、クラス WeatherAgent からクラス Boiler に温度値を取得します。それは機能していません。その理由はわかっています。ご協力いただきありがとうございます。
java - JADE - エージェント ホスティング Web サービス (wsdl)
JADE エージェントを使用して特定のタスクを実行するシステムを構築しています。あるシナリオでは、エージェントの 1 つは、モバイル アプリと通信するために Web サービスをホストする必要があります。
残念ながら、エージェントによって開かれたポートはシステムから見えません。コードを使用して、localhost でポート 9191 を開きます。
この getLocalHost() ルーチンは 127.0.1.1 (localhost ではない) を返しますが、IP を強制的に 127.0.0.1 にすると、wsdl ファイルにアクセスできます
しかし、他のデバイスを使用してこのポートの何かにアクセスすることはできません。また、portscanner ユーティリティはこのポートを検出しません (ただし、デバイス間通信のために JADE エージェント (およびコンテナ) によって使用されているポート 1099 および 7778 を検出します)。
JADE エージェントを使用して wsdl ベースの Web サービスをホストするにはどうすればよいですか?
前もって感謝します、マーティン
clojure - 最後の更新以降に受信したすべてのメッセージを操作する clojure のエージェント/アクターのような構造
次のことを行うアクターまたはエージェント(非同期的に更新され、調整されていない参照)のようなものを実装するためのclojureの最良の方法は何ですか?
- 送信されたメッセージ/データを取得します
- そのデータに対して何らかの関数を実行して、新しい状態を取得します。何かのようなもの
(fn [state new-msgs] ...)
- その更新中にメッセージ/データを受信し続けます
- その更新が完了すると、その間に送信されたすべてのメッセージに対して同じ更新機能を実行します
エージェントはここでは適切ではないようです。機能とエージェントへのデータを同時に処理する必要があり、最後の更新中に入ってきたすべてのsend
データを操作する機能の余地がありません。この目標には、機能とデータの分離が暗示的に必要です。
アクター モデルは、関数とデータが切り離されているという点で、一般的に適しているようです。ただし、私が認識しているすべてのアクター フレームワークは、送信された各メッセージが個別に処理されることを想定しているようです。追加の機械を追加せずに、これをどのように頭に入れるかは明らかではありません。Pulsar のアクターは、アクターに「特別なトリック」を実行させるために使用できる関数を受け入れていることは知って:lifecycle-handle
いますが、これに関するドキュメントはあまりないため、その機能が役立つかどうかは不明です。
エージェント、チャネル、および関数を使用してこの問題を解決する方法はありますが、少し面倒です。より良い解決策があることを願っています。他の人が役立つと思う場合に備えて、解決策として投稿しますが、他の人が何を思いついたのか見てみたい.core.async
watch
lotus-domino - Domino ログが Agent Manager にある理由: エージェントの印刷: イベント ID = 64
log.nsf を確認していたところ、このアラートが 1 秒あたり 10 ~ 20 回の割合で生成されていることがわかりました。ini ファイルにデバッグ パラメータが設定されていません。これは、エージェントで使用する「印刷」ではありません。害はないようですが、アラートがどこから来たのか、またはアラートを消す方法を理解するのに役立つものは何も見つかりません. 問題に関するヒントをありがとう。
list - NetLogo: エージェントはリストを所有できますか?
乗客を乗せて目的地まで運ぶタクシーの NetLogo モデルがあります。タクシーの品種の私の現在の定義は次のとおりです。
destin_xとdestin_yは、それぞれタクシーの現在の目的地の x 座標と y 座標です。
各タクシー内にルート、または各タクシーの目的地のリストを保存したいと思います。すなわち [[x1 y1],[x2 y2][x3 y3]...].
エージェントはこのようなリスト構造を所有できますか? エージェントのaskコマンド内でlputなどのリスト コマンドを使用できますか? この問題を解決する別の方法はありますか?
これまでのところ、これを行う試みはうまくいきません。下記参照:
終わり
variables - Netlogo のすべての turltes の変数の値を求める
こんにちは、3 つの異なる色のカメの個体群の変数「payoff」に値を与える次のコードがあります。
だから私がやりたいのは、タートルのペイオフを青色でチェックし、ペイオフが0未満(つまり-1)の場合、色を赤に変更しますが、個々の青いタートルごとにこれを行う必要があるので、どのコード使ってもいいですか?「one-of」と「any?」を使ってみます。しかし、このコードは私が望む目的ではないと思います。助言がありますか?