2

我正在使用 Python v 2.2.1 并尝试编写需要在 for 循环内并行执行某些任务的代码。迭代次数不固定,取决于列表(serverList在本例中为 )。我如何通过多线程或多处理来实现这一点。我通读了一些示例,但它们并行调用了不同的函数。这里我需要调用相同的函数(shutdownTask),但参数不同。部分代码如下:

try:
    <some code>
    for server in serverList:
        print ('Shutting down server: '+server+'...')
        shutdownTask(server, serverType)
finally:
    verifyStatus()
4

2 回答 2

0

我推荐你芹菜。您可以在后台为每台服务器启动一项任务。

要创建一个任务,你可以使用@task装饰器来装饰你的函数。

要运行任务,您可以使用delay()添加到装饰任务函数的方法。

注意:我不知道如果你真的使用的是非常旧的 Python 版本 2.2.1 是否会出现兼容性问题

更新

如果您不需要如此复杂的解决方案,那么您可以Thread上课。

于 2015-06-29T07:31:38.120 回答
-1

您可以使用进程(或线程)池(假设您的意思是 Python 3.2 版本):

from multiprocessing import Pool

def shutdown(server):
    try:
        shutdownTask(server, serverType)
    except Exception as e:
        return server, str(e)
    else:
        return server, None

try:
    <some code>
    pool = Pool()
    for server, error in pool.imap_unordered(shutdown, serverList):
        if error is None:
            print('Done shutting down server:', server, '...')
        else:
            print('Error shutting down server:', server, '...', error)
finally:
    verifyStatus()
于 2015-06-29T08:24:32.870 回答