繁体   English   中英

如何以线程方式运行python文件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM