2016-06-30 12 views
0

pythonには非常に新しく、simpyスクリプトを使用しようとしました。私はSimPyの一部であると思った "Monitor"を使用すると、名前エラーが発生します。私はモニタをインポートする必要がある別の場所がありますか?simpyを使用してモニタ関数名エラーが発生しました

ありがとうございました!

は、以下を参照してください。

#!/usr/bin/env python 
from __future__ import generators 
import simpy 

from multiprocessing import Queue, Process 
from random import Random,expovariate,uniform 
# MMC.py simulation of an M/M/c/FCFS/inft/infty queue 
# 2004 Dec updated and simplified 
# $Revision: 1.1.1.5 $ $Author: kgmuller $ $Date: 2006/02/02 13:35:45 $ 

"""Simulation of an M/M/c queue 

Jobs arrive at random into a c-server queue with 
exponential service-time distribution. Simulate to 
determine the average number and the average time 
in the system. 

- c = Number of servers = 3 
- rate = Arrival rate = 2.0 
- stime = mean service time = 1.0 

""" 
__version__='\nModel: MMC queue' 

class Generator(Process): 
    """ generates Jobs at random """ 

def execute(self,maxNumber,rate,stime): 
    ##print "%7.4f %s starts"%(now(), self.name) 
    for i in range(maxNumber): 
     L = Job("Job "+`i`) 
     activate(L,L.execute(stime),delay=0) 
     yield hold,self,grv.expovariate(rate) 

class Job(Process): 
    """ Jobs request a gatekeeper and hold it for an exponential time """ 

    def execute(self,stime):  
     global NoInSystem 
     arrTime=now() 
     self.trace("Hello World") 
     NoInSystem +=1 
     m.accum(NoInSystem) 
     yield request,self,server 
     self.trace("At last ") 
     t = jrv.expovariate(1.0/stime) 
     msT.tally(t) 
     yield hold,self,t 
     yield release,self,server 
     NoInSystem -=1 
     m.accum(NoInSystem) 
     mT.tally(now()-arrTime) 
     self.trace("Geronimo ") 

    def trace(self,message): 
     if TRACING: 
      print "%7.4f %6s %10s (%2d)"%(now(),self.name,message,NoInSystem) 



TRACING = 0 

print __version__ 
c = 3 
stime = 1.0 
rate = 2.0 
print "%2d servers, %6.4f arrival rate,%6.4f mean service time"%(c,rate,stime) 
grv = Random(333555) # RV for Source 
jrv = Random(777999) # RV for Job 
NoInSystem = 0 
m=Monitor() 
mT=Monitor() 
msT=Monitor() 
server=Resource(c,name='Gatekeeper') 

initialize() 
g = Generator('gen') 
activate(g,g.execute(maxNumber=10,rate=rate,stime=stime),delay=0) 
simulate(until=3000.0) 


print "Average number in the system is %6.4f"%(m.timeAverage(),) 
print "Average time in the system is %6.4f"%(mT.mean(),) 
print "Actual average service-time is %6.4f"%(msT.mean(),) 
+0

はStackOverflowのへようこそ! **小規模の**動作例を投稿することで答えが得られる可能性が高くなります。また、実際のエラーメッセージとその行が投稿できる場合は、それも役立ちます。 –

+0

旧式でサポートされていないSimPy 2を使用しています。SimPy 3の使用を検討してください。simpy.readthedocs.org –

答えて

0

Monitorは現在、スクリプト内で定義されていないため、あなたは現在name errorを受けています。 simpyMonitorを使用するには、現在Monitor機能を使用している場所にimport simpyfrom simpy import Monitorに変更するか、simpy.Monitorを追加する必要があります。

例:

#!/usr/bin/env python 
from __future__ import generators 
from simpy import Monitor 

または(行71-73):

m=simpy.Monitor() 
mT=simpy.Monitor() 
msT=simpy.Monitor() 
+0

ありがとうございます。 simpy.Monitorを追加すると、属性エラーが表示されます: モジュールにはオブジェクト "モニタ"がありません アイデアはありますか? –

+0

@JayFrank私は上記のあなたのコード内で 'monitor'を見ないので、あなたの依存関係の中にあるか、simpy.Monitor()の代わりに' simpy.monitor'をどこかに持っています。正確なエラーメッセージがなければ、どのような場合になるかは分かりません。 –

+0

はここでエラー **メートル=モニタ()**私は **メートル= simpy.Monitor()に切り替えたときに 、ここではエラーです** **はAttributeErrorを取得するコードです: 'module'オブジェクトには 'monitor'属性はありません** –

関連する問題