问题标签 [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.

0 投票
1 回答
242 浏览

multithreading - Clojure - 使用代理会大大降低执行速度

我正在为 Clojure 中的程序编写基准测试。我有n线程同时访问缓存。每个线程将访问缓存x时间。每个请求都应该记录在一个文件中。

为此,我创建了一个代理来保存要写入的文件的路径。当我想编写 send-off一个写入文件并简单地返回路径的函数时。这样我的文件写入是无竞争条件的。

当我在没有代理的情况下执行我的代码时,它会在几毫秒内完成。当我使用代理时,每次我的代码运行速度非常慢时都要求每个线程发送给代理。我说的是分钟。

(barrier/run-with-barrier)代码只是产生usercount多个线程并同时启动它们(使用原子)。我传递的函数是每个线程的主体。

正文将简单地映射到一个名为 的列表store-data,这是一个键值列表(例如,{:a 1 :b 2}。我的代码中这个列表的长度现在是 10。用户数也是 10。

如您所见,代理发送的代码已被注释掉。这使得代码正常执行。但是,当我启用发送时,即使没有写入文件,执行时间也太慢了。

编辑:

我制作了每个线程,在他发送给代理之前,打印一个点。这些点的出现速度与没有发送时一样快。所以最后一定有什么东西阻塞了。

难道我做错了什么?

0 投票
1 回答
776 浏览

logging - 您如何使用代理和 core.async 在 Clojure 中正确异步记录?

在下面的代码中,我使用了一个 go 循环,它在通道上侦听并将它读取的值写入代理。然后,在同一个循环中,日志到文件功能应该将代理上的每个项目写入文件。但是,文件的输出是不寻常的,因为具有 [8 6 5 13] 的代理可能会将其内容作为 865n13 吐到文件中。如果我从记录器函数中删除日志到文件调用并单独调用它,有时文件输出很好,有时不是。有人可以向我解释发生了什么,并可能向我展示一种安全的方法来证明一致的行为吗?我知道不使用代理可能是实现一致行为的最佳方式。我只是想知道,本着学习的精神,使用代理可以实现什么,不可以实现什么。提前感谢!

编辑:

这是根据下面接受的答案中的评论重写的代码。我完全不建议使用此代码,或者就此而言,在 go 循环中使用具有副作用的代理。

0 投票
4 回答
386 浏览

memory-leaks - F#MailboxProcessor try/catch 块中的内存泄漏

在 John Palmer 在评论中指出明显错误后更新。

以下代码导致OutOfMemoryException

如果我不使用 try/catch 块,错误就消失了。

增加睡眠时间只会推迟错误。

更新 2:我想这里的问题是函数停止尾递归,因为递归调用不再是最后一个执行的调用。对于具有更多 F# 经验的人来说,将其脱糖会很好,因为我确信这是 F# 代理中常见的内存泄漏情况,因为代码非常简单和通用。

0 投票
1 回答
489 浏览

java - Java:将 XML 值作为另一个类中的新变量访问

Java 编程

我有一个类 WeatherAgent。这个类的作用是从World weather online的一个URL(XML代码)中获取当前温度值和其他参数。

我的主要问题是;如何将 WeatherAgent 类中生成的温度值转换为另一个类(锅炉)?因此,将 WeatherAgent 类中的 XML 值作为另一个类(锅炉类)中的新变量访问。

我在锅炉类中有这个方法,可以将 WeatherAgent 类中的温度值获取到锅炉类中。它不工作,我知道为什么。已经感谢您的帮助!

0 投票
1 回答
201 浏览

java - JADE - 代理托管网络服务 (wsdl)

我正在构建一个利用 JADE 代理执行某些任务的系统。在一种情况下,其中一个代理需要托管 Web 服务以与移动应用程序通信。

不幸的是,代理打开的端口对系统不可见。我正在使用代码在 localhost 上打开端口 9191:

这个 getLocalHost() 例程返回 127.0.1.1(不是 localhost),但是当我强制 ip 为 127.0.0.1 时,我可以访问 wsdl 文件

但我无法使用任何其他设备访问此端口上的任何内容。此外,portscanner 实用程序没有找到此端口(但确实找到了 JADE 代理(和容器)用于设备间通信的端口 1099 和 7778)。

如何使用 JADE 代理来托管基于 wsdl 的 Web 服务?

在此先感谢,马丁

0 投票
3 回答
276 浏览

clojure - clojure 中类似代理/演员的构造,可对自上次更新以来收到的所有消息进行操作

clojure 中实现以下操作的最佳方法是什么?

  • 获取发送的消息/数据
  • 对该数据执行某些功能以获得新状态;就像是(fn [state new-msgs] ...)
  • 在该更新期间继续接收消息/数据
  • 完成该更新后,对在此期间发送的所有消息运行相同的更新功能

代理似乎不太合适。必须同时send向代理程序运行和数据,这不会为对上次更新期间传入的所有数据进行操作的函数留出空间。该目标隐含地要求将功能和数据解耦。

Actor 模型似乎更适合于函数和数据的解耦。但是,我所知道的所有参与者框架似乎都假设发送的每条消息都将单独处理。目前尚不清楚如何在不增加额外机器的情况下将其转变为头脑。我知道Pulsar 的演员接受一个:lifecycle-handle可以用来让演员做“特殊技巧”的功能,但是没有很多关于这个的文档,所以不清楚这个功能是否有用。

确实有使用代理、core.async通道和watch函数来解决这个问题,但它有点乱,我希望有更好的解决方案。如果其他人发现它有帮助,我会将其作为解决方案发布,但我想看看其他人提出了什么。

0 投票
1 回答
110 浏览

lotus-domino - Why is Domino log Agent Manager: Agent printing: Event ID = 64

I was reviewing my log.nsf and note that this alert is being generated at a rate of 10-20 times per second. I have no debug parameters set in the ini file and this is not a 'print' I'd use in my agents. It doesn't appear to harm anything but I can find nothing that helps me understand where the alert comes from or how to make it go away. Thanks for any tips on the issue.

0 投票
1 回答
305 浏览

netlogo - 要求一个代理集从另一个代理集获取值

我的卖家使用以下代码设置 trade_Price:

如果我的买家在同一个补丁中有卖家,我希望我的买家也采用相同的 trade_Price。(如果有的话?卖家 - 在这里)。我这样编码:

我认为它的代码错误,因为我从代理夫妇那里得到了不同的 trade_Price 。你知道我该如何设置吗?最好的问候

0 投票
1 回答
177 浏览

list - NetLogo:代理可以拥有列表吗?

我有一个出租车的 NetLogo 模型,可以接载乘客并将他们带到目的地。我目前对出租车品种的定义如下:

destin_xdestin_y分别是出租车当前目的地的x 和y 坐标。

我想在每辆出租车中存储一条路线,或每辆出租车的目的地列表。即[[x1 y1],[x2 y2][x3 y3]...]。

代理可以拥有这样的列表结构吗?我可以在代理的询问命令中使用列表命令,例如lput吗?有没有解决这个问题的替代方法?

到目前为止,我这样做的尝试没有奏效。见下文:

结尾

0 投票
1 回答
35 浏览

variables - 求 Netlogo 中所有 turltes 的一个变量的值

您好,我有下一个代码可以为具有 3 种不同颜色的海龟种群的变量“收益”赋值

所以我想做的是用蓝色检查海龟的收益,如果收益小于0(即-1),它们会将颜色更改为红色,但是我需要为每个单独的蓝色海龟执行此操作,所以什么代码我可以用吗?我尝试使用“one-of”和“any?” 但我认为这段代码不是为了我想要的目的。有什么建议么?