2012-03-15 6 views
2

私はPythonで書かれた小さなデスクトップゲームを持っていて、ゲームの実行中に内部のものにアクセスしたいと思っています。私は別のスレッドで実行されているweb.pyとページを提供することによってこれを行うことを考えていました。したがって、http://localhost:8080/mapにアクセスすると、デバッグの目的で現在のレベルのマップが表示されます。他のアプリケーションの中でweb.pyサーバを実行する方法

私はweb.pyをインストールして実行していますが、ここからどこに行くのか本当にわかりません。私は別のスレッドでweb.applicationを起動しようとしましたが、何らかの理由でスレッド間でデータを共有できません(私は思っています)。

以下は、私がこのアイデアをテストしている単純な例です。私はhttp://localhost:8080/が毎回異なる番号を返すと考えましたが、同じ番号(5)を表示し続けます。 whileループの中でcommon_valueを印刷すると、インクリメントされていますが、5から始まります。

ここでは何が分かりませんか?可能であれば、データベースの使用を避けたいと思っています。

をcommon_valueは別のモジュールで定義され、そこからインポートし、上記のコードが動作している場合:

import web 
import thread 

urls = (
    '/(.*)', 'hello' 
) 

app = web.application(urls, globals()) 

common_value = 5 

class hello:   
    def GET(self): 
     return str(common_value) 

if __name__ == "__main__": 
    thread.start_new_thread(app.run,())  
    while 1: 
     common_value = common_value + 1 

答えて

1

ビット周り検索した後、私は動作解決策を見つけました。だから、(ネーミングを言い訳)本質的に:

thingy.py

common_value = 0 

server.py

import web 
import thread 
import thingy 

import sys; sys.path.insert(0, ".") 

urls = (
    '/(.*)', 'hello' 
) 

app = web.application(urls, globals()) 

thingy.common_value = 5 

class hello:   
    def GET(self):    
     return str(thingy.common_value) 

if __name__ == "__main__": 
    thread.start_new_thread(app.run,())  
    while 1: 
     thingy.common_value = thingy.common_value + 1 
+0

'code'、def GET(self): return str(thingy.common_value)' code' – Cletrix

0

私は引数を持つerrosを見つけましたが、 変更: def GET(self)

with:

def GET(self, *args): 

となりました。

関連する問題