Python 传递环境变量
如何使用Python 传递环境变量,python,networkx,Python,Networkx,如何使用Relabel_节点函数中的映射在switch类中传递环境变量(env) 实际上我试过: H = nx.relabel_nodes(G, mapping=switch(env) ,copy=True 但它不起作用,给了我错误。 传递env变量是模拟开始的关键 **class switch(object): def __init__(self, id): self.id = id self.env = env self.store
Relabel_节点
函数中的映射在switch类中传递环境变量(env)
实际上我试过:
H = nx.relabel_nodes(G, mapping=switch(env) ,copy=True
但它不起作用,给了我错误。
传递env变量是模拟开始的关键
**class switch(object):
def __init__(self, id):
self.id = id
self.env = env
self.store = simpy.Store(env)
self.rate = 100
self.out = None
self.packets_rec = 0
self.packets_drop = 0
self.qlimit = None
self.byte_size = 0 # Current size of the queue in bytes
self.debug = False
self.interfaces = []
self.numinterfaces = 16
self.busy = 0
for i in range(self.numinterfaces):
self.interfaces.append(SwitchPort(env, self.rate))
def __repr__(self):
return self.id
def edges_():
""" Return the lanl internet view graph from lanl.edges
"""
try:
fh = open('edges.list', 'r')
except IOError:
print("File not found")
raise
G = nx.Graph()
for line in fh.readlines():
(node1, node2) = line.split()
G.add_edge(str(node1), str(node2))
# get largest component and assign ping times to G0time dictionary
return G
if __name__ == '__main__':
import networkx as nx
env = simpy.Environment()
G = edges_()
H = nx.relabel_nodes(G, mapping=switch ,copy=True)
print("The graph has %d nodes with %d edges" \
% (nx.number_of_nodes(H), nx.number_of_edges(H)))**
根据开关类代码,传递给开关对象的参数应该是
id
,而不是env
,因此修改开关类以接受两个变量id和env,如下所示:
class switch(object):
def __init__(self, id, env):
self.id = id
self.env = env
然后,创建开关对象的调用将是:
H = nx.relabel_nodes(G, mapping=switch(id, env) ,copy=True)
尝试了AttributeError:交换机实例没有调用方法读取。您正在传递一个
开关
对象(或者在示例的末尾,传递开关
类本身),但是您需要传递一个dict
。