2016-03-22 16 views
0

Oldukça standart bir Python şişesi api var. Api'nin uç noktası paylaşım programı işlevlerinin birkaçı. Yardımcı fonksiyon paralel olarak çağrılmadı gibi görünüyor ???Python Şişe Çerçevesi - Paylaşılan İşlev Uç Noktalarla Paralel Çalışmıyor

Aşağıdaki kod örneğinde, api'de iki son nokta, foo ve çubuk bulunur. Benim anlayışım, foo ve çubuğun aynı anda çağrılması durumunda, bunları işlemek için iki ayrı thread oluşturulduğudur. Bu yüzden util_func bu iş parçacıkları kapsamında yürütülmelidir.

İki ayrı konu oluşturulduğunu görüyorum. Ancak util_func son çağrı iş parçacığı tarafından engelleniyor gibi görünüyor. Örneğin, bar denirse o zaman foo. foo'daki util_func, foo'daki util_func tamamlanıncaya kadar engellenir. Ardından bardaki util_func tamamlandı.

Bu beklenen davranış ??? Benim kodumdaki tek fark, util_func'ın ayrı bir modül olmasıdır.

def util_func(): 
    # do stuff 

@app.route(/foo) 
def foo(): 
    util_func() 
    # do other stuff 

@app.route(/bar) 
def bar(): 
    util_func() 
    # do other stuff 

bottle.run(app=app,host='localhost', port=8888,server='cherrypy') 
+0

Evet, beklenen davranışı daha yardımı olacağını söyledi util_func üzerinde daha detaylı bilgi verilecektir olursa

def util_func(): time.sleep(10) #10 long seconds... 

Onları paralel

çalışan görmelisiniz yazacağım Eğer

'util_func', herhangi bir G/Ç çağrısı yapmadığı varsayılarak. Bir seferde sadece bir Python iş parçacığı çalışır. Https://wiki.python.org/moin/GlobalInterpreterLock sayfasına bakın. –

cevap

0

Görünüşe göre bir GIL sorununa çarpmışsınız. size ben

İlgili konular