python - 如何计算实例的索引?
问题描述
我想像这样启动多个服务器:
Server 1
Server 2
Server 3
我已经写了一段代码:
class Server:
def __init__(self, index):
self.index = index
我的主要是这样的:
server1 = Server(1)
server1.run()
所以我的问题是你可以在标题中读到:如何动态地全局计算不同实例(服务器)的索引?
解决方案
将总实例计数存储在类变量中。
class Server:
instances = 0
def __init__(self):
Server.instances += 1
self.index = Server.instances
跨多个实例解决此问题需要更多工作。您必须使用文件来保存计数器,并且您必须确保两个进程不会争夺下一个打开文件的人。这应该适用于 Linux:
import fcntl
class Server:
CNTR = 'mycounter.txt'
def __init__(self):
if not os.path.exists(CNTR):
open(CNTR,'w').write('0')
fctl.lock( f, fcntl.LOCK_EX )
n = int(open(CNTR).read()) + 1
open(CNTR,'w').write(str(n))
fctl.lock( f, fcntl.LOCK_UN )
self.index = n
推荐阅读
- python - 从扫描的照片中删除空格
- ios - 为什么我的 leftBarButtonItem 在 iOS 11.4 上变得更小
- python-3.x - 我可以追加到文本文件的开头吗?
- jquery - 如何在 MVC 中另一个视图内的视图中进行部分工作?
- c# - 挂起应用程序时,垃圾收集器会破坏单例对象
- python - 使用 Python 的 ElementTree 库解析带有命名空间的 XML 文件
- python - elasticsearch可以在高度复杂的JSON结构上执行吗?
- python - 如何将 NaN >> [''] 转换为 Pandas Dataframe 的所有元素?
- java - 在 Spring Boot 应用程序中具有无状态休眠会话的 Spring Data JPA 存储库
- css - 使用 CSS 创建它的最简单方法