网络同步字典。

netmem的Python项目详细描述


Python versions supportedcurrent version on PyPIbuild status

python中跨网络的基本内存同步。

此包有一个运行 在asyncio事件循环上。它支持绑定到 类似于tk.Variable()的字典,并且也兼容 使用tkinter及其事件循环。

安装

最简单的方法是打开您喜爱的终端并键入

pip install netmem

或者,您可以克隆此repo并使用

python setup.py install

要求

  • 令人惊叹的aiohttp库
  • python v3.5+

netmem的基础是异步IO和事件循环,因此 向python v2.x用户道歉,并就此向python v3.4道歉。 尽管python v3.4支持asyncio,但我真的很喜欢 v3.5中引入的async forasync with结构, 我在很多地方都用过。因为python已经启动了 在撰写本文的时候,我并不觉得太糟糕 留下3.4版。

用法

这是我能想到的最小的有意义的例子。 在同一网络上的两台不同的计算机上运行它。

import tkinter as tk
import netmem

def main():
    print("Run this on two different computers.")
    mem = netmem.NetworkMemory()
    mem.connect_on_new_thread(netmem.UdpConnector(local_addr=("225.0.0.1", 9991)))

    tk1 = tk.Tk()
    lbl = tk.Label(tk1, text="Favorite operating system:")
    lbl.pack()
    txt = tk.Entry(tk1, textvariable=mem.tk_var("fav_os"))
    txt.pack()

    tk1.mainloop()


if __name__ == "__main__":
    main()

可以将侦听器绑定到NetworkMemory对象,以便在 值会更改,例如当更新通过网络到达时。听众 工作方式类似于下面的代码片段。

def memory_changed(netmem_dict, key, old_val, new_val)
    print("Update  {}:{}".format(key, new_val))

def main():
    mem = netmem.NetworkMemory()
    mem.add_listener(memory_changed)
    mem["foo"] = "bar"

其输出如下

Update foo:bar

顺便说一下,底层的BindableDict类本身就非常方便, 甚至没有网络同步功能。

数据结构

NetworkMemory子类是一个python字典,因此您可以访问 它里面的数据就像你做任何字典对象一样。另外你可以 将侦听器绑定到NetworkMemory(因为它实际上是 可绑定字典,这是我从其他代码中借用的 我写道)。

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

推荐PyPI第三方库


热门话题
tomcat Java条带错误   java OPENTSDB fsck修复程序不更正重复点   java JavaFX在控制器内切换自身的可见性   java maven surefire插件未并行执行运行程序   读取导致Freemarker模板引擎中TemplateException的Java对象   无法使Java库与我的Android应用程序一起工作   安卓 java。lang.IllegalStateException游标   使用Java检索XML文件中的XSL URL和名称   java如何从文本文件集合中提取特定值   电子邮件java mail gmail   java为什么finalize()只被垃圾收集器调用一次?   java方法findViewById(int)对于Json类型是未定义的。蛇形   java在安卓中尝试从brother打印机打印位图时遇到以下异常   java在颤振中支持Kotlin的优势   java从后面编写文本   java制作列表。第一个列表可以有相同的数字,第二个将是价格,尝试制作第三个列表,如果它们是相同的数字,它将添加价格