【发布时间】:2017-10-09 16:53:32
【问题描述】:
我目前正在编写一个基于 Python 的应用程序,该应用程序多次运行相同的函数,但从不使用相同的参数。
该应用程序的目标是通过 pywinrm 模块将 PowerShell 命令发送到服务器。这是一个简化的代码 sn-p 更新 Windows 文件夹的权限:
server = input('Please provide a server: ')
path = input('Provide the path of the folder: ')
permissions = ['Read', 'ReadAndExecute', 'List', 'Write', 'Modify']
run_ps_cmd(server, path, permissions[0])
run_ps_cmd(server, path, permissions[1])
run_ps_cmd(server, path, permissions[2])
run_ps_cmd(server, path, permissions[3])
run_ps_cmd(server, path, permissions[4])
目前,运行需要 20 秒,我想提高性能,但我不知道如何。我应该走哪个方向?并行、线程、多处理等...?
非常感谢。
【问题讨论】:
-
需要查看代码示例以了解哪些选项对您的情况最有帮助。一般来说,线程适用于 I/O 密集型任务,多处理适用于 CPU 密集型任务。
-
嗨@CasualDemon,感谢您的意见。我已使用代码 sn-p 更新了我的原始帖子,以提高您的知名度。
-
只是猜测,因为您没有描述需要优化的
run_ps_cmd函数是什么。您可能首先想知道是否可以将相关数据作为一个整体收集,然后在本地进行处理。如果不可能,因为涉及到网络,它很可能是一个 IO 绑定任务,可以尝试多线程,方法是在自己的线程中运行每个run_ps_cmd,然后加入所有线程。如果您想要更详细的答案,请显示相关代码。
标签: python python-3.x