多处理,Pool.map()
Multiprocessing, Pool.map()
我不明白它是如何工作的。我的函数 log_in 有两个参数 user 和 password。并让 list 包含我所有的用户和密码。因此,当我使用 p.map(log_in, list) 时,这意味着列表将迭代 "unpack"。其中 ['user','bitnami'], ['user1', '12345'] 等将是这些参数 log_in(用户,密码)。
是吗?
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'
问题是 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)]
.
我不明白它是如何工作的。我的函数 log_in 有两个参数 user 和 password。并让 list 包含我所有的用户和密码。因此,当我使用 p.map(log_in, list) 时,这意味着列表将迭代 "unpack"。其中 ['user','bitnami'], ['user1', '12345'] 等将是这些参数 log_in(用户,密码)。 是吗?
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'
问题是 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)]
.