网络同步字典。

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第三方库


热门话题
java Android HttpClient cookies   如何使用Java在远程系统上运行SSH命令?   java从字符串数组中的字符串末尾删除“,”   在One plus 3t手机上,当应用程序被终止或从最近的应用程序中刷出时,java Android FCM推送通知不起作用   java如何使垂直滚动条始终位于jtable的末尾   在java中解析迄今为止“未知”的字符串   javascript在Java中获取Nashorn JsonObject   java windows 10和ubuntu可以使用相同的JDK吗?   java在不同的文件中记录不同的日志。但所有日志都放在同一个文件中   具有特定jdk的java Gradle构建项目   xml Java web服务生成错误响应   javascript Jaggery文件更改不显示   java输出二进制搜索树数组   将BufferedReader解析为JSON对象时,java在位置处意外标记文件结尾