- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 fab 在远程主机上运行命令。我无法使用内置的 fab 并行执行模式,因为我的代码是由我无法控制的某些库调用的。它创建多个线程并使用不同的主机参数调用我的driver(host) 方法。
下面是我如何尝试实现它的代码示例。
def setup_env_for_fab(host, user):
env.host_string = host
env.user = user
def run_command():
run("python some_program.py")
def driver(host):
setup_env_for_fab(host, "ubuntu")
run_command()
因此driver(host) 函数可以被具有不同主机参数的多个线程调用。如果 driver(host) 被不同线程同时调用,这会在不同主机上并行运行命令吗?如果这没有按预期工作,我该如何实现?
最佳答案
如果您真的不需要,请不要手动滚动。 Fabric 使用 multiprocessing
内置并行执行,例如使用 -P
CLI 标志:
$ fab -H web1,web2,web3 -P driver
参见 Fabric docs on parallel execution对于所有选项。
至于线程支持,参见FAQ - Is Fabric thread-safe? .当前的 Fabric 1.10 仍然不是线程安全的:
Is Fabric thread-safe?
Currently, no, it’s not – the present version of Fabric relies heavily on shared state in order to keep the codebase simple. However, there are definite plans to update its internals so that Fabric may be either threaded or otherwise parallelized so your tasks can run on multiple servers concurrently.
更新:
结构现在是线程安全的:Upgrading from 1.x
关于python - Fabric 使用线程在不同主机上并行运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30071901/
我是一名优秀的程序员,十分优秀!