在python类中运行同步进程

时间:2018-04-20 13:56:24

标签: python multiprocessing

我正在使用pygame开发游戏,我想在加载资源时创建加载屏幕。加载屏幕有动画,因此加载屏幕和资源加载应该同时进行。

请考虑以下代码:

class Game:
    def __init__(self):
       self.loading_screen()
       self.load_assets()
    def loading_screen(self):
       # do something while load_assets() is running
    def load_assets(self):
       # load all assets needed

我已尝试过多处理过程,但我不知道如何在load_assets()运行时保持loading_screen()不冻结运行。

另外,我已经尝试过线程,但是python没有同时运行线程,所以,在某些时候,loading_screen()会冻结。 (这可能是错的,但这在游戏中被观察到了)

有些帮助吗? 谢谢大家

1 个答案:

答案 0 :(得分:0)

线程适用于此。无论如何,在多用户系统上什么都没有完全同时运行。

import threading
from time import sleep

class Game:
    def __init__(self):
        self.loading_screen()
    def loading_screen(self):
        t = threading.Thread(target=self.load_assets)
        t.daemon = True
        t.start()
        while t.isAlive():
            sleep(0.1)
            print("loading screen")
        print ("assets done, ready to proceed now")

    def load_assets(self):
        i = 0
        while i < 10:
            print("loading assets")
            i += 1
            sleep(1)

g = Game()
print("done")

这会将您的资产加载到一个线程,然后在主线程中输入loading_screen()。这只是打印消息以证明它们都是并行运行的。