You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python线程实现:伪生命模拟多AI实例并行执行需求

Python多线程实现伪生命AI并行执行方案

核心实现思路

  • 使用Python标准库threading为每个animal_instance创建独立线程,运行无限循环的AI逻辑
  • 维护一个集合记录已启动AI线程的实例,彻底避免重复调用
  • 调整物种创建函数,在实例初始化完成后立即启动线程,保证物种创建与AI运行并行不阻塞

具体代码实现

1. 导入必要模块

import threading
import random

2. 定义AI函数(示例)

def AI(animal_instance):
    # 替换为你的实际AI逻辑,以下为示例循环
    while True:
        print(f"{animal_instance.name} 正在执行AI行为...")
        # 添加延时防止资源占用过高
        import time
        time.sleep(1)

3. 修改speciesMaking函数

# 全局集合:记录已启动AI线程的实例,避免重复
active_ai_instances = set()

def speciesMaking(rng):
    # 注:建议将animal_instance改为函数内创建并返回,替代全局变量使用,避免实例混淆
    global animal_instance
    animal_instance.name = namingproc()
    rng2 = random.randint(0, 5)

    # 原有物种属性设置逻辑保留(修正原拼写错误:Hervibore → Herbivore)
    if rng == 0:
        animal_instance.isCarnivore = True
        animal_instance.hierarchy = random.randint(3, 10)
        animal_instance.size = random.randint(3, 10)
        print("Carnivore = True")
        
        if rng2 > 4:
            print("Scavenger = True")
            animal_instance.isScavenger = True
            animal_instance.hierarchy = random.randint(3, 10)
            animal_instance.size = random.randint(3, 10)

    if rng == 1:
        animal_instance.isOmnivore = True    
        animal_instance.hierarchy = random.randint(3, 10)
        animal_instance.size = random.randint(3, 10)
        print("Omnivore = True")
        
        if rng2 > 4:
            animal_instance.isScavenger = True
            animal_instance.hierarchy = random.randint(3, 10)
            animal_instance.size = random.randint(3, 10)
            print("Scavenger = True")

    if rng == 2:
        animal_instance.isHerbivore = True  
        animal_instance.hierarchy = random.randint(3, 10)
        animal_instance.size = random.randint(3, 10)
        print("Herbivore = True")

    if rng == 3:
        rng = random.randint(0, 4)
        speciesMaking(rng)
        return  # 递归调用后直接返回,避免后续重复启动线程

    elif rng == 4:
        animal_instance.isDecomposer = True
        if random.randint(0, 2) == 1:
            animal_instance.size = 1
            animal_instance.hierarchy = 0
            animal_instance.isFlora = True
            print("Flora = True")
        else:    
            animal_instance.hierarchy = 0
            animal_instance.size = 0
            animal_instance.isBacteria = True
            animal_instance.isDecomposer = True
            print("Bacteria = True")
        print("Decomposer = True")

    print(animal_instance.name, " = ", animal_instance)   

    # *关键步骤*:启动AI线程,确保每个实例仅启动一次
    if animal_instance not in active_ai_instances:
        active_ai_instances.add(animal_instance)
        # 设置daemon=True可让主线程退出时自动终止AI线程,适合模拟场景
        ai_thread = threading.Thread(target=AI, args=(animal_instance,), daemon=True)
        ai_thread.start()

4. 重要注意事项

  • 实例独立性:避免使用全局animal_instance,建议改为speciesMaking函数创建并返回实例,防止递归或多实例创建时出现混淆
  • 线程安全:若AI逻辑涉及共享资源(如全局环境、食物池),需使用threading.Lock()进行同步,避免数据竞争
  • 线程生命周期:若不需要随主线程终止AI线程,可移除daemon=True参数,手动维护线程列表以控制启停

内容的提问来源于stack exchange,提问作者warranty99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:40:22