在线程或进程中使用pygame是否安全?

问题描述

我需要在另一个线程中使用pygame,即pygame循环和所有渲染都在单独的线程上。我不能在主线程中使用pygame。

我听说有些环境不喜欢在主线程之外进行渲染,但是我无法在线找到任何确认或示例。

那么,在单独的线程上运行pygame是否安全?如果不是,那么在单独的进程上使用pygame是否安全?如果没有,我有什么选择?

请明确一点,我想做这样的事情:

from threading import Thread  # should I use multiprocessing.Process?

import pygame as pg


def run_game():
    pg.init()
    screen = pg.display.set_mode(...)
    running = True
    while running:
        # all pygame event handling and logic
        pg.dispaly.flip()


if __name__ == "__main__":
    t = Thread(target=run_game,args=())  # should be Process?
    t.start()
    # do other things on the main thread
    t.join()

在我的机器上(Windows 10,Python 3.7.9),该示例可以很好地工作,并且还可以与multiprocessing.Process而不是threading.Thread一起使用。我不知道它是否可以在所有平台上都可以使用,更复杂的示例是否可以在我的计算机上使用。

那么,这是否安全,或者我需要做一些其他事情才能使它起作用?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)