python中的多代理系统开发框架

pade的Python项目详细描述


python代理开发框架(pade)

Join the chat at https://gitter.im/lucassm/Pade


PADE

pade是一个在分布式计算环境中开发、执行和管理多代理系统的框架。pade代码是100%python,其核心是twisted,一个用于实现分布式应用程序的python包。

pade也是自由软件,并获得麻省理工学院许可证。首先,它是由电力工程系的电力智能电网集团(GREI)在巴西塞阿拉联邦大学开发的。现在每个有兴趣开发pade的人都欢迎下载,安装,测试,使用和发送我们的反馈。

文档

帕德有很好的记录。您可以访问文档hear:PADE documentation

依赖关系

pade是在Python 3.7中开发的,具有Twisted核心。

安装

通过python包索引(pypi):

$ pip install pade

通过Github:

$ git clone https://github.com/greiufc/pade
$ cd pade
$ python setup.py install

码头工人

构建容器

$ docker-compose up -d

列出容器

$ docker ps

CONTAINER ID        IMAGE
8d7cb00972c9        pade_pade

进入容器

$ docker exec -it <CONTAINER_ID> bash

示例

帕德你好世界:

frompade.misc.utilityimportdisplay_message,start_loopfrompade.core.agentimportAgentfrompade.acl.aidimportAIDfromsysimportargvclassAgenteHelloWorld(Agent):def__init__(self,aid):super(AgenteHelloWorld,self).__init__(aid=aid)display_message(self.aid.localname,'Hello World!')if__name__=='__main__':agents_per_process=3c=0agents=list()foriinrange(agents_per_process):port=int(argv[1])+cagent_name='agente_hello_{}@localhost:{}'.format(port,port)agente_hello=AgenteHelloWorld(AID(name=agent_name))agents.append(agente_hello)c+=1000start_loop(agents)

此新版本中的更改

新版本中添加了一些更改,但不要担心,如果在模拟中使用pade,在旧版本中调整此版本非常容易。

pade最大的变化就是你如何启动你的代理。现在,当您通过pip命令或setup.py install安装pade时,您将安装一个启动pade应用程序的pade终端命令行(cli)。

例如,如果将hello world示例代码放在名为hello-agent.py的文件中,并且只想启动一次此代理,则可以在命令行界面中键入:

$ pade hello-agent.py 

如果要启动此代理3次,请键入:

$ pade --num 3 hello-agent.py 

如果要在端口20000、20001和20002中启动3个代理,请键入:

$ pade --num 3 --port 20000 hello-agent.py 

听说我们得解释一下帕德是如何执行特工的。

当您键入命令--num 3--port 20000时,您告诉pade命令行工具执行文件hello-agent.py的内容3次。每次,文件内容将在一个新进程中执行,属性port将作为参数在该进程中传递,每次单位递增。例如,在--num 3--port 2000情况下,为代理传递的参数是2000、2001和2002。

应该在代码中使用sys.argv[1]访问此参数。因此,您可以执行每个进程所需的代理数。在hello-agent.py示例中,有一个for循环,它将按照agents_per_流程变量中的定义重复多次。这将定义每个进程中的代理数。在本例中,由于--num参数为3,agents_per_过程变量为3,pade将在端口中启动9个代理:20000、21000、22000、20001、210001、22001、20002、210002和22002。

命令行也将支持模式而不是一个代理文件,例如,如果代理处于模式而不是一个文件,则可以使用如下命令启动:

$ pade --num 3 --port 20000 hello-agent_1.py hello-agent_2.py

在这种情况下,第一个代理在sys.argv[1]中接收值20000,第二个代理接收值20001,依此类推。

有另一种方法可以启动pade代理。是一个json格式的配置文件。听说这是配置文件的一个例子:

{"agent_files":["agente_teste_1_200.py","agente_teste_3_200.py"],"port":20000,"num":2,"pade_ams":{"host":"localhost","port":8000},"pade_web":{"active":true,"host":"localhost","port":5000},"pade_sniffer":{"active":true,"host":"localhost","port":8001},"session":{"username":"pade_user","email":"pade_user@pade.com","password":"12345"}}

要启动,只需键入命令行:

pade --config_file pade_config.json

如果需要使用发送和接收消息的大量代理执行模拟,建议使用选项--no_pade_sniffer启动pade会话,例如每秒发送5条消息的500个代理,因为在数据库中注册此消息将开销pade执行。例如:

$ pade --num 3 --port 20000  --no_pade_sniffer hello-agent_1.py hello-agent_2.py

要显示正在运行的代理,请在此链接中显示视频:pade agents start example

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
由于测试失败,java testcontainers maven构建失败   java实现jacobi算法实现laplace方程   java中的多线程:如何在不等待所有线程使用ExecutorService完成任务的情况下终止所有线程的执行?   java Hello World不在Android Studio 3中工作   ubuntu Tomcat7的Java版本不正确   java Javafx内存泄漏   对于手动实现的Spring数据存储库方法,我应该使用Java8默认方法吗?   googleappengine中的java添加过滤查询   html当使用JSOUP库在Java中读取标签时,如何保留标签(如<br>、<ul>、<li>、<p>等)的含义?   编码为什么jasper生成的报告在Java中不显示西里尔语(保加利亚语)?   java有没有办法隐藏当前位置和jdk动作?   java找出编译原型文件的版本   有没有办法在运行时更改java方法的访问修饰符?   语法字符串。。。Java中的参数   java数组元素在添加其他元素时会相互覆盖   eclipse中的java GWT项目   java如何为spring rest模板请求将动态json属性名映射到jackson   java无法在Windows 10上找到特定的JDK   在xml字符串和java字符串之间提取正则表达式子字符串