2017-10-16 152 views
3

我不明白它是如何工作的。我有功能log_in有兩個參數用戶密碼。並有列表與我所有的用戶和密碼。所以,當我使用p.map(log_in,list)時,這意味着列表將會迭代並「解包」。其中,[ '用戶', 'bitnami'],[ 'USER1', '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)] .