我想进行模拟,其中服务时间取决于某些功能的计算复杂度。
请求到达不应由于函数处理而停止。为了测试,我使用了利用 cpu 几秒钟的示例函数:
sorted([float(random.random()) for i in range(1000000)])
如何调用它来模拟服务,但不阻止新的服务请求到达。如果我调用这个函数,新的服务请求会在函数执行之后到达,而不是在规定的时间。
def visit(self, timeAtNAT, res):
arrive=time.clock()-startTime
print("%7.4f. Packet #%s arrived." % (time.clock()-startTime, self.name))
yield request, self, res
wait = time.clock()-startTime - arrive
print("%7.4f. Packet #%s waited %6.3f" % (time.clock()-startTime, self.name, wait))
sorted([float(random.random()) for i in range(1000000)])
yield release, self, res
print("%7.4f. Packet #%s left" % (time.clock()-startTime, self.name))
因此,在我的示例中,新数据包仅在前一个数据包离开后才到达。
我尝试使用multiprocessing
,但我遇到了(Process
类)命名冲突。我是 SimPy、并行编程和 Python 方面的新手。