[英]how to run a python file as Thread?
示例Python父文件:
class myClass( wx.Frame ):
def __init__(self):
print "Prepare execute"
self.MyThread = Thread.RunBackground( './child.py' , ( '--username' , 'root' ) );
print "Executing... Do you like this app?"
self.MyThread.start();
def onClose( self , evt ):
self.MyThread.close()
self.exit();
app = MyClass()
我需要知道如何使用Python在后台运行脚本。 这个想法是,即使第二个进程起作用,也可以使用主窗口。
我将在这里猜测:您根本不关心线程,您只想“运行脚本”作为“第二个进程”。
这很容易。 运行脚本就像运行其他任何东西一样。 您使用subprocess
模块。 由于脚本在完全独立的Python解释器实例中运行,因此在完全独立的进程中,“即使第二个进程起作用,也可以使用主窗口”,或者即使它永久旋转或阻塞也可以使用。
例如:
class myClass( wx.Frame ):
def __init__(self):
print "Executing... Do you like this app?"
self.child = subprocess.Popen([sys.executable, './child.py', '--username', 'root'])
def onClose( self , evt ):
self.child.wait()
self.exit();
这里唯一的技巧是作为第一个参数传递的内容。 如果要确保child.py
与父代使用相同的Python副本运行,请使用sys.executable
。 如果要确保它由默认的Python运行,即使父级使用其他python
,请使用python
。 如果要使用特定路径,请使用绝对路径。 如果您想让外壳程序(或者在Windows中,是pylauncher之类的东西)根据#!
来计算出来#!
行,使用shell=True
并仅将./child.py
作为第一个参数传递。 等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.