Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 并行运行for循环中的所有迭代_Python_Multithreading_For Loop_Multiprocessing_Python 2.2 - Fatal编程技术网

Python 并行运行for循环中的所有迭代

Python 并行运行for循环中的所有迭代,python,multithreading,for-loop,multiprocessing,python-2.2,Python,Multithreading,For Loop,Multiprocessing,Python 2.2,我正在使用Pythonv2.2.1并试图编写一段代码,该代码需要在for循环中并行执行一些任务。迭代次数不是固定的,取决于列表(serverList,在本例中)。如何通过多线程或多处理实现这一点。我通读了一些示例,但它们并行调用不同的函数。这里我需要调用相同的函数(shutdownstask),但参数不同。部分代码如下所示: try: <some code> for server in serverList: print ('Shutting down

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

try:
    <some code>
    for server in serverList:
        print ('Shutting down server: '+server+'...')
        shutdownTask(server, serverType)
finally:
    verifyStatus()
试试看:
对于服务器列表中的服务器:
打印('正在关闭服务器:'+server+'…'))
关机任务(服务器、服务器类型)
最后:
验证状态()
我向您推荐。您可以在后台为每台服务器启动一个任务

要创建任务,请使用
@task
装饰器装饰函数

要运行任务,请使用添加到修饰任务函数中的
delay()
方法

注意:如果您真的使用非常旧的Python版本2.2.1,我不知道是否存在兼容性问题

更新

如果你不需要这么复杂的解决方案,那么你可以去上课。

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

要创建任务,请使用
@task
装饰器装饰函数

要运行任务,请使用添加到修饰任务函数中的
delay()
方法

注意:如果您真的使用非常旧的Python版本2.2.1,我不知道是否存在兼容性问题

更新

如果您不需要如此复杂的解决方案,那么您可以使用类。

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

来自多处理导入池的

def关闭(服务器):
尝试:
关机任务(服务器、服务器类型)
例外情况除外,如e:
返回服务器,str(e)
其他:
返回服务器,无
尝试:
池=池()
对于服务器,池中的错误。imap_无序(关闭,服务器列表):
如果错误为无:
打印('已完成关闭服务器:',服务器'…')
其他:
打印('关闭服务器时出错:',服务器'…',错误)
最后:
验证状态()
您可以使用进程(或线程)池(假设您指的是Python 3.2版本):

来自多处理导入池的

def关闭(服务器):
尝试:
关机任务(服务器、服务器类型)
例外情况除外,如e:
返回服务器,str(e)
其他:
返回服务器,无
尝试:
池=池()
对于服务器,池中的错误。imap_无序(关闭,服务器列表):
如果错误为无:
打印('已完成关闭服务器:',服务器'…')
其他:
打印('关闭服务器时出错:',服务器'…',错误)
最后:
验证状态()

您尝试过Python v 2.2.1吗?真正地因为这是一个古老的概念。你为什么要使用13年前版本的python?看看print函数(及其括号),你可能指的是python V3.2.1。虽然我仍然建议升级到当前版本(3.4),但给出了一个用不同参数并行调用相同函数的非常简单的示例。您可以根据自己的需要进行调整。您尝试过吗?Pythonv2.2.1?真正地因为这是一个古老的概念。你为什么要使用13年前版本的python?看看print函数(及其括号),你可能指的是python V3.2.1。虽然我仍然建议升级到当前版本(3.4),但给出了一个用不同参数并行调用相同函数的非常简单的示例。您可以根据自己的需要进行调整。为什么要安装整个芹菜框架,而内置的多处理模块可能可以做到这一点?如果您正在创建一个相当大的系统,芹菜是一个不错的选择。您可以监视任务的状态,并以一种非常简单的方式管理它们。但是,如果这是一项简单的任务,并且您不需要任何管理,那么您可以通过
线程处理
我看不到任何大系统的迹象,因此我会从小系统开始。为什么要安装整个芹菜框架,而内置的多处理模块可能可以做到这一点?如果您正在创建一个相当大的系统,芹菜是个不错的选择。您可以监视任务的状态,并以一种非常简单的方式管理它们。但是,如果这是一项简单的任务,并且您不需要任何管理,那么您可以通过
线程处理
我看不到任何关于大系统的迹象,因此我会从小系统开始。是“2.6版中的新版本”。@PeterWood:python3。2@PeterWood:阅读问题下的评论。2.2很可能是个错误。我们甚至不清楚如何安装如此古老的版本。问题下的注释验证了它是2.2.1。是“2.6版中的新版本”。@PeterWood:python3。2@PeterWood:阅读问题下的评论。2.2很可能是个错误。我们甚至不清楚如何安装如此古老的版本。问题下的注释验证了它是2.2.1。
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()