从Python多进程中创建线程

从Python多进程中创建线程,python,multithreading,python-3.x,multiprocessing,Python,Multithreading,Python 3.x,Multiprocessing,我正在为一个游戏编写代码,AI作为线程运行。它们存储在一个包含相关信息的列表中,这样当它们的角色“死亡”时,只需将其从活动AI列表中删除,就可以有效地将其从游戏中删除 控制它们的线程最初是从另一个线程中调用的,而控制播放器的tkinter窗口在主线程中运行——然而,AI线程导致主线程速度减慢。在寻找降低创建AI的线程优先级的方法后,我发现我必须使用multiprocessing.Process而不是threading.thread,然后改变它的精细度-但是当我尝试这样做时,AI线程不起作用。运行

我正在为一个游戏编写代码,AI作为线程运行。它们存储在一个包含相关信息的列表中,这样当它们的角色“死亡”时,只需将其从活动AI列表中删除,就可以有效地将其从游戏中删除

控制它们的线程最初是从另一个线程中调用的,而控制播放器的tkinter窗口在主线程中运行——然而,AI线程导致主线程速度减慢。在寻找降低创建AI的线程优先级的方法后,我发现我必须使用multiprocessing.Process而不是threading.thread,然后改变它的精细度-但是当我尝试这样做时,AI线程不起作用。运行此命令的函数在
类AI()中定义。

这些线程的输出应该显示在stdout中,但是当运行程序时,什么也没有显示-我假设这是因为线程没有启动,但是我不能判断这是否只是因为它们的输出没有显示。我想找到一种方法让这个解决方案起作用,但我怀疑这个解决方案太难看了,不值得修复,或者根本无法修复

如果这像我担心的那样可怕,我也会完全接受解决这个问题的新方法

我在Windows10机器上运行这个。提前谢谢

编辑:

实际的print语句在另一个线程中—当AI执行一个操作时,它会将一个描述其操作的字符串添加到队列中,队列由另一个线程打印出来(好像我没有足够的线程)。例如:

battle_log.append('{0} dealt {1} damage to {2}!'.format(self.name,damage[0],target.name))
由以下人员宣读:

def battlereport():
    '''
    Displays battle updates.
    '''
    global battle_log, done
    print('\n')
    while not done:
        for i in battle_log:
            print(i)
            battle_log.remove(i)

你在哪里生产过产品?我没有看到任何
print
s。我将进行编辑以澄清这一点。在
线程的开头添加
battle\u log.append('Thread{name}startet')
battle_log.append('{0} dealt {1} damage to {2}!'.format(self.name,damage[0],target.name))
def battlereport():
    '''
    Displays battle updates.
    '''
    global battle_log, done
    print('\n')
    while not done:
        for i in battle_log:
            print(i)
            battle_log.remove(i)