我有簡單的Twisted webserver應用程序服務我的數學請求。一切都做工精細(我躲在大碼片未涉及到我的問題):多線程內部請求扭曲_delayedRender
#import section ...
class PlsPage(Resource):
isLeaf = True
def render_POST(self, request):
reactor.callLater(0, self._delayedRender, request)
return NOT_DONE_YET
def _delayedRender(self, request):
#some actions before
crossval_scores = cross_validation.cross_val_score(pls1, X, y=numpy.asarray(Y), scoring=my_custom_scorer, cv=KFold(700, n_folds=700))
#some actions after
request.finish()
reactor.listenTCP(12000, server.Site(PlsPage()))
reactor.run()
當我試圖通過例如設置n_jobs
加快cross_validation
計算爲3
crossval_scores = cross_validation.cross_val_score(pls1, X, y=numpy.asarray(Y), scoring=my_custom_scorer, cv=KFold(700, n_folds=700), n_jobs=3)
後我得到了3個例外:
twisted.internet.error.CannotListenError:無法偵聽任何:12000:[Errno 10048]通常只允許使用每個套接字地址(協議/網絡地址/端口) 。
由於某些原因,我無法在_delayedRender內使用n_jobs> 1調用cross_val_score。 這裏是異常的追溯,由於某些原因reactor.listenTCP試圖啓動3次。
任何想法如何得到它的工作?
UPD1。我創建文件PLS.py搬到了這裏所有的代碼,除了最後2行:
from twisted.web import server
from twisted.internet import reactor, threads
import PLS
reactor.listenTCP(12000, server.Site(PLS.PlsPage()))
reactor.run()
但問題仍然存在。我還發現這個問題只存在於Windows上。我的Linux機器很好地運行這些腳本。
感謝您的解釋。但問題仍然存在,我更新了這個問題。我還發現我只在Windows中出現異常。我的linux服務器很好地運行這個代碼。 –
在Windows上,執行多處理時,任何「主」代碼都應該由'if __name__ =='__main __''來保護。這是一個非常着名的問題;谷歌爲它。 –
感謝雕文@larsmans現在可以工作。 –