【问题标题】:How to execute another Python script (Server) but keep the current script running at the same time如何执行另一个 Python 脚本(服务器)但同时保持当前脚本运行
【发布时间】:2019-11-14 20:51:00
【问题描述】:

我正在 Python3 上制作多人游戏。在我的主菜单屏幕中,当玩家点击播放时,我希望 maingame 子程序运行,但也需要一个完全独立的文件(Server.py)在另一个与之平行的窗口中运行。现在我必须分别打开 Server.py 和主游戏文件,但我希望能够从主菜单中打开这两个文件。

我试过了:

import os
import subprocess

If user_selection == "start":
    command="Server1.py"
    os.system(command)
    subprocess.Popen(command)
    main_game()

命令、操作系统和子进程部分应该运行 server1.py 文件(它确实如此)。但随后它继续在同一窗口中运行 main_game() ,因此它停止服务器并运行游戏。我已经尝试使用 subprocess 命令两次(一次用于 server.py,另一次用于 main_game.py),但没有成功。有没有办法当玩家从主菜单屏幕点击“运行游戏”时,服务器文件在第二个窗口中执行,第一个窗口从主菜单转到 main_game 子程序?

注意:两个文件都在同一个目录中。

谢谢:)

【问题讨论】:

    标签: python-3.x file simultaneous


    【解决方案1】:

    从提供的信息来看,concurrent.futures 似乎是运行结构化代码的正确方法。来自python docs

    with ThreadPoolExecutor(max_workers=4) as e:
        e.submit(shutil.copy, 'src1.txt', 'dest1.txt')
        e.submit(shutil.copy, 'src2.txt', 'dest2.txt')
        e.submit(shutil.copy, 'src3.txt', 'dest3.txt')
        e.submit(shutil.copy, 'src4.txt', 'dest4.txt')
    

    上面的代码将同时复制所有文件。

    对于您的代码,您需要将客户端和服务器都提交到ThreadPoolExecutor

    【讨论】:

    • 我想我可以理解,但是没有比我可以执行的命令更简单的方法来打开另一个 py 文件吗?
    • 如果我了解您要做什么,多线程可能是最好的选择。并发运行文件通常是客户端服务器设置的最佳实践。您可以调用并立即将每段代码置于后台(我认为),但这可能有点复杂。
    • 哦,好吧,我想我将使用线程。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多