在新线程中从另一个模块运行一个函数?

时间:2013-04-06 07:19:51

标签: python multithreading

我为我的应用程序创建了一个简单的插件系统,现在,我想在一个新线程中运行每个插件。
这是我的代码的一部分:

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函数 现在的问题是:
如何在新线程中调用外部函数?
提前谢谢!

1 个答案:

答案 0 :(得分:0)

问题在于,当我们尝试创建一个新线程时,我们应该将args传递给我们想要在新线程中调用它的方法。如果它没有得到任何参数,我们应该传递一个像这样的空元组:

newThread(mod.init, ())
相关问题