繁体   English   中英

用于线程之间通信的Python数据持久对象

[英]Python data persistent object for communication between threads

如图所示这里 ,我成立了一个由蟒蛇CherryPy的WSGI服务器提供的Django应用程序。 该应用程序基本上是另一个IRC客户端。 达成协议:很可能我必须为需要建立的每个新服务器连接创建多个单独的bot实例。 我需要能够与每个机器人进行通信。 一个建议的答案是使用multiprocessing.Queue 这个对象是持久的数据,确实允许我与机器人进行通信。 但是,我需要所有的机器人同时收听同一信号,例如停止。 每个机器人都必须控制停止信号是否适合他。 因此,我需要一个对象或其他方法,允许每个在单独的守护线程中运行的bot侦听一堆信号。 cherrypy用于服务器范围消息的总线系统很棒,但是在这里看起来像是一个过大的杀手,我也不知道如何实现它。 有什么建议么 ?

因此,事实证明我只是混合了变量和对象。 无法在一个模块中定义变量并将其导入另一个模块(a = foo,然后从另一个模块修改a并从第三个模块导入a)。 使用列表,字典和内容是可能的。 解决方案:每次启动僵尸程序(并尝试连接到给定的服务器)时,都会在字典中创建一个队列并将其分配给该服务器,该队列的键为:昵称(在IRC上必须唯一)。 每个漫游器都有一个恶魔监听器,可以读取队列。 其他模块将dict(特定队列)导入dict,并在其中放置一个信号,供侦听器使用。 该系统运行良好。 竖起大拇指。 不过,我在一个方面遇到困难:每个漫游器可以具有多个DCC连接,并且很难将数据分配给每个连接而不混淆它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM