2017-10-16 4 views
3

어떻게 작동하는지 이해할 수 없습니다. 내가 가진 함수 log_in 사용자암호 두 개의 인수가 있습니다. 그리고 내 모든 사용자와 암호가 이고 목록이입니다. 그래서, p.map (log_in, list)을 사용할 때, 그것은리스트가 반복하고 "압축을 풀"것을 의미합니다. [ '사용자', 'bitnami'], [ '사용자 1', '12345'] 등이 인수 log_in (사용자, 비밀번호) 할 위치. 예?다중 처리, Pool.map()

def log_in(user, password): 
     payload = wrap_creds_in_xml(username=user, password=password) 
     response = requests.post(TARGET_URL, payload) 

if __name__ == '__main__': 
    TARGET_URL = 'http://192.168.1.6/wp-login.php' 
    list = [['user', 'bitnami'], ['user1', '12345'], 
      ['user2', '54321'], ['user3', 'qwerty']] 
    p = Pool(5) 
    p.map(log_in, list) 

그리고 내가 가지고있는 오류

TypeError: main() missing 1 required positional argument: 'password'

+0

오류 메시지가 이러한 경우가 제안 ... –

답변

1

문제는 log_in는 두 개의 인수를 취하는 함수이지만, 여러분의 코드가 그 기능을 단 하나의 인수를 전달하는 것입니다 : 두 요소 목록을. Pool.starmap 대신 Pool.map을 시도해보십시오

p.starmap(log_in, list) 

Pool.starmap()의 문서에서 :

Like map() except that the elements of the iterable are expected to be iterables that are unpacked as arguments.

Hence an iterable of [(1,2), (3, 4)] results in [func(1,2), func(3,4)] .