如何统计一个实例的Index?
How to count the Index of an instance?
我想像这样启动多个服务器:
Server 1
Server 2
Server 3
我已经写好了代码:
class Server:
def __init__(self, index):
self.index = index
我的主图是这样的:
server1 = Server(1)
server1.run()
所以我的问题是,你可以在标题中看到:
如何全局动态统计不同实例(服务器)的索引?
将实例总数存储在 class 变量中。
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
我想像这样启动多个服务器:
Server 1
Server 2
Server 3
我已经写好了代码:
class Server:
def __init__(self, index):
self.index = index
我的主图是这样的:
server1 = Server(1)
server1.run()
所以我的问题是,你可以在标题中看到: 如何全局动态统计不同实例(服务器)的索引?
将实例总数存储在 class 变量中。
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