我有一个拥有多个主机的网络。然后我有一个流量发生器来安排"流动"并告诉主持人启动它们。
流量生成器计算必须使用其初始时间进行调度的流列表。因此,每次必须在主机中启动流时,都会调用一个函数,并告诉正在侦听命令的主机启动流。
因此调度非常简单:
for flow in flows:
self.scheduler.enter(flow["start_time"],1, self.startFlowSingle,[flow])
self.scheduler.run()
def startFlowSingle(self,flow):
#sends command to the server
clientName = self.topology.getHostName(flow["src"])
self.unixClient.send(json.dumps({"type":"flow","data":flow.toDICT()}),clientName)
在上面的代码中,self.scheduler
是一个sched.scheduler
对象,self.unixClient
用于向主机发送命令。
然而,如果100个流程必须在完全相同的时间开始,调度程序将按顺序发送所有命令,并且根据延迟,我猜这将使我的流程延迟(以及我不喜欢的东西)。真的很想。)
有更好或更有效的方法吗?