0
我爲我的應用程序創建了一個簡單的插件系統,現在我想在一個新線程中運行每個插件。
這裏是我的代碼的一部分:從新線程中的另一個模塊運行一個函數?
def newThread(self, f, args=()):
t = threading.Thread(target=f, args=args)
t.deamon = True
t.start()
return t
print "s"
for mod in imported_modules:
if 'init' in vars(mod):
newThread(mod.init, None)
print 1
我的一個插件是在插座上監聽TCP服務器。如果我在主線程中運行它,應用程序不會加載其他插件並等待服務器停止!
另外上面的代碼不會在我的插件上運行init函數。
現在的問題是:
如何在新線程中調用外部函數?
在此先感謝!
在CPython中的線程已知有缺陷。如果您包含一些能夠證明您遇到問題的代碼,那將會很有幫助。 – NPE 2013-04-06 07:23:32
我不明白。你不能在一個單獨的線程中運行你的TCP服務器嗎? – freakish 2013-04-06 07:23:59
@freakish tcp服務器沒關係! 'newThread'不能從另一個模塊運行一個功能 – 2013-04-06 07:26:09