我正在尝试制作一个同时运行两个脚本的游戏。
例如,一个脚本接受用户的输入和其他变量,另一个脚本更新屏幕、控制对象并运行任何需要的任务。
我需要能够在脚本运行时在脚本之间来回传递变量。
下面是我的代码示例:
主.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
这个解决方案的唯一问题是你不能直接编辑其他脚本中的变量