【问题标题】:Python 3 run two applcations in windows parallelPython 3 在 Windows 中并行运行两个应用程序
【发布时间】:2017-10-01 02:06:08
【问题描述】:

一个问题:我想并行运行两个不同的 exe 文件(Windows)。 我所有的测试都启动了两个应用程序,但一个接一个(关闭应用程序后)。怎么了?

import threading
import subprocess
import os.path

def Worker(aPrg):
    _, name = os.path.split(aPrg)
    if os.path.isfile(aPrg):
        lExe = []
        lExe.append(aPrg)
        print('Start: ' + name)
        lResult = subprocess.call(lExe)
    else:
        print('ERROR: ' + name + ' not available!')
    return

def main():
    t1 = threading.Thread(target=Worker('C:\\windows\\notepad.exe'))
    t2 = threading.Thread(target=Worker('c:\\windows\\explorer.exe'))
    t1.start()
    t2.start()

if __name__ == '__main__':
        main()

感谢所有的想法!

地鳄

【问题讨论】:

    标签: multithreading python-3.x subprocess


    【解决方案1】:

    这里讨论了这个问题的原因:Python threading appears to run threads sequentially

    这应该对你有帮助:

    import subprocess
    import os.path
    import multiprocessing
    
    def Worker(aPrg):
        _, name = os.path.split(aPrg)
        if os.path.isfile(aPrg):
            lExe = []
            lExe.append(aPrg)
            print('Start: ' + name)
            lResult = subprocess.call(lExe)
        else:
            print('ERROR: ' + name + ' not available!')
        return
    
    def main():
        p = multiprocessing.Pool(2)
        p.map(Worker, ('c:\\windows\\explorer.exe','c:\\windows\\explorer.exe'))
    
    if __name__ == '__main__':
            main()
    

    【讨论】:

    • 谢谢!它工作正常。我观察到另一种可能性是使用 Popen 而不是 call。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    相关资源
    最近更新 更多