如何在实时/运行的脚本之间传递变量



我正在尝试制作一个同时运行两个脚本的游戏。

例如,一个脚本接受用户的输入和其他变量,另一个脚本更新屏幕、控制对象并运行任何需要的任务。

我需要能够在脚本运行时在脚本之间来回传递变量。

下面是我的代码示例:

主.py

#main
Num = 0
while True:
if (#/up key is pressed/#):
Num=1

控制

#control script
while True:
if main.Num==1:
main.Num=0
Move_object()

我曾尝试将数据保存到一个文件中,然后从另一个脚本中读取数据,但出现了问题,因为有时脚本试图同时读取文件,这会导致我的代码崩溃。

通过同时运行两个或多个脚本,它可以拆分任务并有助于提高帧速率,因为它不是一个脚本处理所有函数,而是在脚本之间共享进程。

编辑:

我唯一的目标是在脚本运行时在脚本之间来回传递变量。

有人知道我怎样才能达到目标吗?

这需要线程处理,因为它是两个进程。最简单的方法是在两个线程之间共享变量共享值堆栈溢出

如果您愿意,您可以在多线程中查看MUTEX、SEMAPHORE,这将帮助您处理多个进程访问同一资源

我使用mmap 从朋友那里找到了一个符合我标准的粗略解决方案

主.py

import mmap
while True:
a=mmap.mmap(0, 100, 'GlobalSharedMemory')    #get data/file
inp=bytes(input(": "),"utf-8")    #gets input and changes to bytes
a.write(inp)    # write inp to data/file

控制

import mmap
while True:
a=mmap.mmap(0, 100, 'GlobalSharedMemory')    #get data/file
val=a.read().replace(b"x00",b"")    #remove empty bytes
if val != b"":    # if val is not empty
print(val)    #print val
a=mmap.mmap(0, 100, 'GlobalSharedMemory')    #get data/file
a.write(b"x00"*100)    #re-write data

这个解决方案的唯一问题是你不能直接编辑其他脚本中的变量

最新更新