相关疑难解决方法(0)

如何在Python中使用类实例的多处理?

我正在尝试创建一个类,而不是可以运行一个单独的进程去做一些需要很长时间的工作,从主模块中启动一堆这些,然后等待它们全部完成.我想一次启动流程,然后继续为他们提供待办事项,而不是创建和销毁流程.例如,也许我有10个运行dd命令的服务器,然后我希望它们全部scp文件等.

我的最终目标是为每个系统创建一个类,用于跟踪与其绑定的系统的信息,如IP地址,日志,运行时等.但该类必须能够启动系统命令然后返回在系统命令运行时执行回执行调用程序,以便稍后跟随系统命令的结果.

我的尝试失败了,因为我无法通过pickle将管道上的类的实例方法发送到子进程.那些不是pickleable.因此,我试图以各种方式解决它,但我无法弄明白.如何修补我的代码呢?如果你不能发送任何有用的东西,多处理有什么用呢?

是否有与类实例一起使用的多处理的良好文档?我可以使多处理模块工作的唯一方法是简单的功能.在类实例中使用它的每次尝试都失败了.也许我应该通过事件呢?我还不明白该怎么做.

import multiprocessing
import sys
import re

class ProcessWorker(multiprocessing.Process):
    """
    This class runs as a separate process to execute worker's commands in parallel
    Once launched, it remains running, monitoring the task queue, until "None" is sent
    """

    def __init__(self, task_q, result_q):
        multiprocessing.Process.__init__(self)
        self.task_q = task_q
        self.result_q = result_q
        return

    def run(self):
        """
        Overloaded function provided by multiprocessing.Process.  Called upon start() signal
        """
        proc_name = self.name
        print '%s: Launched' % (proc_name)
        while True:
            next_task_list = self.task_q.get()
            if next_task …
Run Code Online (Sandbox Code Playgroud)

python decorator multiprocessing

24
推荐指数
2
解决办法
3万
查看次数

标签 统计

decorator ×1

multiprocessing ×1

python ×1