gpt4 book ai didi

python - 如何进行 future 的调用并等待 Python 完成?

转载 作者:太空狗 更新时间:2023-10-29 16:56:30 24 4
gpt4 key购买 nike

我有以下代码,其中有一个用户名列表,我尝试使用 net user\domain | 检查用户是否在特定的 Windows 用户组中找到一些组

问题是我为每个用户名大约 8 个用户组运行该命令而且速度很慢。我想使用 futures 甚至单独的线程发送这些调用(如果这样更快)。

我只需要等到最后再做其他事情。我该如何在 Python 中完成它?

for one_username in user_list:
response = requests.get(somecontent)

bs_parsed = BeautifulSoup(response.content, 'html.parser')

find_all2 = bs_parsed.find("div", {"class": "QuickLinks"})
name = re.sub("\s\s+", ' ', find_all2.find("td", text="Name").find_next_sibling("td").text)

find_all = bs_parsed.find_all("div", {"class": "visible"})
all_perms = ""
d.setdefault(one_username + " (" + name + ")", [])
for value in find_all:
test = value.find("a", {"onmouseover": True})
if test is not None:
if "MyAppID" in test.text:
d[one_username + " (" + name + ")"].append(test.text)

for group in groups:
try:
d[one_username + " (" + name + ")"].append(check_output("net user /domain " + one_username + "| find \"" + group + "\"", shell=True, stderr=subprocess.STDOUT).strip().decode("utf-8"))
except Exception:
pass

最佳答案

(这个答案目前忽略了 HTML 解析你的代码......你可以将它排队到一个池中,就像这种方法排队 net user 调用一样)/p>

首先,让我们定义一个函数,它接受 (user, group)tuple 并返回所需的信息。

# a function that calls net user to find info on a (user, group)
def get_group_info(usr_grp):
# unpack the arguments
usr, grp = usr_grp

try:
return (usr, grp,
check_output(
"net user /domain " + usr + "| find \"" + grp + "\"",
shell=True,
stderr=subprocess.STDOUT
).strip().decode("utf-8")))
except Exception:
return (usr, grp, None)

现在,我们可以使用 multiprocessing.dummy.Pool 在线程池中运行它

from multiprocessing.dummy import Pool
import itertools

# create a pool with four worker threads
pool = Pool(4)

# run get_group_info for every user, group
async_result = pool.map_async(get_group_info, itertools.product(user_list, groups))

# now do some other work we care about
...

# and then wait on our results
results = async_result.get()

results(user, group, data) 元组的列表,可以根据需要进行处理。

注意: 由于平台差异,此代码目前未经测试

关于python - 如何进行 future 的调用并等待 Python 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43558000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com