내 함수가 많은 인수를 가지고 있기 때문에 numba 및 다중 처리와 함께 코드를 향상 시키려고했지만 꽤 얻을 수 없습니다. 이미 다른 기능 (아래 참조)를 단순화많은 입력이있는 for 루프에서 풀 구현
... 각 에이전트 (클래스 인스턴스)로
이러한 작업을 위해 서로 독립적이다, 나는 Pool
로 for
를 교체하고 싶습니다.
그래서 나는 많은 기능 I 에이전트
나는 풀링 기능이 필요로하는 모든 인수를 추가 할from multiprocessing import Pool
p = Pool(4)
p.map(pooling, list(agents))
하지만, 목록 전화를 통과 할 pooling()
을 얻을 것?
그것은이므로 :
def check_demographics(month, my_agents, families, firms, year, mortality_men, mortality_women, fertility, state_id):
dummy = list(my_agents)
d = str(state_id.iloc[0])
# Place where I would like to replace the LOOP. All below would be a function
for agent in dummy:
if agent.get_region_id()[:2] == d:
# Brithday
if month % 12 == agent.month - 1:
agent.update_age()
# Mortality probability
if agent.get_gender() == 'Male':
prob = mortality_men[mortality_men['age'] == agent.get_age()][year].iloc[0]
# When gender is Female
else:
# Extract specific agent data to calculate mortality 'Female'
prob = mortality_women[mortality_women['age'] == agent.get_age()][year].iloc[0]
# Give birth decision
age = agent.get_age()
if 14 < age < 50:
pregnant(agent, fertility, year, families, my_agents)
# Mortality procedures
if fixed_seed.random() < prob:
mortal(my_agents, my_graveyard, families, agent, firms)
그것은 내 프로그램에 기능을 소모 대부분의 시간입니다. @jit
은별로 도움이되지 않습니다.
감사합니다.
참고 : 전역 변수 또는 매개 변수 "my_graveyard"가 없습니다. –
정말로 감사합니다. –