多进程代码

博客主要围绕TensorFlow代码运行问题展开。一是运行时只有一个CPU占满,速度慢,解决办法是开进程并定义worker函数;二是进程速度不一致,可采用异步编程;还提到运行卡顿问题,可能因使用公有资源,改为多个对象后恢复正常。

Q:跑tensorflow代码时,发现只有一个cpu占满,导致运行速度过慢

A: 在选择act是开进程

        1. 开进程

 manager = mp.Manager()
        processes=[]
        cross_list=manager.list() #传递数据需要用到的公共参数
        
        #开多个进程
        for i in range(ALL_num):
            p = mp.Process(target=worker_function, args=(all_agents_list[i],cross[intersection_id[i]], s_array[intersection_id[i]], s_o_array[i],i,cross_list))
            p.start()
            processes.append(p)
            # TIME.sleep(0.003)

        for p in processes:
            p.join() #等待所有进程
            # p.terminate()
        

        2. worker函数

        Q:有的进程快,有的进程慢,怎么解决

        A:定义异步编程

def worker_function(agent,cross,s,o_s,i,cross_list):
    loop = asyncio.get_event_loop()
    loop.run_until_complete(process_choose_act(agent,cross,s,o_s,i,cross_list))
    loop.close()

        3. worker内函数

async def  process_choose_act(agent,cross,s,o_s,i,cross_list):
    action, P = agent.choose_action(state, other_state, index=i)
    cross.action = action
    cross.action_p = P
    print('{}:act {},p {}'.format(cross.name,cross.action,P))
    phase(cross,action,current_time,agent)
    cross.action_store.append(cross.action)
    cross.phase_store.append(cross.phase)
    cross_list.append(cross)

T:会出现运行着不动的现象,gpt上说明可能是使用了公有资源,比如多次调用一个对象,改为多个对象后正常运行

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值