Python/Pygame从一个文件切换到另一个文件
抱歉如果这个问题很简单,或者我听起来像个傻瓜。我想知道如何在一个文件里执行一个脚本,比如pygame的事件循环、绘图等等,然后切换到另一个文件,SelectWorld.py,它有自己的事件循环和绘图等等。如果我只是调用它的主函数,这样会不会因为原来的文件还开着而导致变慢,还是说这样做就没问题?像是SelectWorld.transition()这样的调用。提前谢谢你。
3 个回答
这里的意思是,我们想要在两个不同的应用程序之间共享变量:也就是两个不同的脚本,它们都有自己的事件循环、绘图等。所以,按照定义,它们应该在不同的进程中运行(如果它们必须同时运行的话)。
有两种主要的方法可以做到这一点:
1 - 客户端-服务器架构(就像游戏服务器那样)(服务器和客户端可以在同一台机器上运行)
2 - 多进程,在同一台机器上运行两个进程,并使用不同的方式来通信和同步变量。(比如管道队列、事件等)
我理解你是在尝试对你的游戏进行变量分析吗?如果是用来调试或测试游戏的话。我认为你需要写很多代码才能获得一点有用的信息(因为游戏可能运行得太快,你没法分析变量)。
你有以下几种选择:
1 - 使用 import pdb, pdb.set_trace():这会在你调用这个函数的那一行停止程序,然后你可以在终端看到变量的值。
2 - 你可以使用 Eclipse(配合 pyDev):这是一个非常好的调试工具,可以逐行调试。
3 - Unittest 和 Mock:这是你应该开始使用的东西,因为它很有用,你可以很容易地看到什么时候破坏了旧代码(用 unittest)和/或测试新代码……
希望这些对你有帮助 :)
这里有个建议:你可以创建两个版本的脚本。一个版本把所有东西都放在一起,另一个版本则把代码分开,放在不同的文件里,并给这些文件起个聪明的名字。
现在,先用这个命令运行第一个版本:
$ time python my_game_all_in_one.py
(美元符号代表命令行提示符。)然后运行第二个版本:
$ time python my_game.py
time
命令会告诉你游戏实际运行了多长时间,包括真实时间和占用的CPU时间。你可以把这两个命令各运行十次,然后算出每个的平均时间。
这个过程叫做“性能分析”,它可以帮助你判断哪种方法更好,或者说这两种方法之间是否真的有区别。
其实这个问题的答案非常简单。我在刚学Python的时候就问过这个问题。直接从另一个文件调用一个函数,让它去完成所有的工作,并不会让速度变慢。谢谢大家的回答!