我构建了一个非常简单的TCP服务器(用python编写),当查询该服务器时,会返回运行该脚本的主机操作系统的各种系统级统计信息。在
作为我实验的一部分,我的目标是获得python及其可用库的知识;我希望构建一个管理接口,a)绑定到一个单独的TCP套接字b)接受来自LAN的远程连接,c)允许连接的用户发出各种命令。Varnish应用程序是一个提供类似管理功能的工具的示例。在
我对线程的知识是有限的,我正在寻找如何完成类似以下任务的指针:
user connects to admin port (telnet remote.host 12111), and issues "SET LOGGING DEBUG", or "STOP SERVICE".
我的困惑在于如何在线程之间共享数据。如果服务是在例如thread-1上启动的,我如何从该线程访问数据?在
或者,提供这样一个特性的python应用程序列表将是一个很大的帮助。我很乐意翻阅代码,以便重用他们的想法。在
最好使用multiprocessing库,它为并行计算提供了一整套功能(队列、管道等)。 由于GIL的限制,python中的多线程处理效率不高。在
最简单的起点可能是Python的xmlrpclib。在
关于线程,所有线程都可以读取Python程序中的所有数据;一次只有一个线程可以修改任何给定的对象,因此诸如list和dicts之类的原语将始终处于一致的状态。涉及多个原语的数据结构(即类对象)需要更加小心。在线程之间协调的最安全的方法是通过类似的方式在线程之间传递消息/命令排队。排队;这并不总是最有效的方法,但它不容易产生问题。在
python包括一些多线程服务器(
SocketServer
,BaseHTTPServer
,xmlrpclib
)。你可能还想看看Twisted,它是一个强大的联网框架。在相关问题 更多 >
编程相关推荐