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上说明可能是使用了公有资源,比如多次调用一个对象,改为多个对象后正常运行

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

被折叠的 条评论
为什么被折叠?



