【问题标题】:python twisted and multiprocessingpython扭曲和多处理
【发布时间】:2012-01-28 00:30:39
【问题描述】:

我如何分叉(通过流程包装)并在新流程中完全重置扭曲。 我必须从具有大量反应器的进程中生成一个新进程,但我需要更改反应器(在新进程中)删除某些内容并添加其他内容。

例如,我在父级和子级中都需要一个 glib2reactor....但是 twisted 通知我反应器已经安装(在 fork 之后)。 Fork 使用每个扭曲的反应器将父记忆复制给孩子。我怎样才能“重置”扭曲的孩子?

感谢您的帮助,

杜达

【问题讨论】:

    标签: python twisted multiprocessing


    【解决方案1】:

    os.fork()克隆当前进程,将子进程的进程id返回给父进程,将0返回给子进程。

    if os.fork():
        "parent"
    else:
        "child"
    

    如果您使用os.system()subprocesses 模块,您将获得一个全新的流程。

    您可以在os.system() 命令中使用分叉& 来避免阻塞。

    error = os.system('ls &')
    

    os.execv和朋友用目标命令替换当前进程。

    【讨论】:

      【解决方案2】:

      Twisted 支持通过twisted.internet.interfaces.IReactorProcess 启动任意子进程(包括使用 Twisted 的进程)。使用方法见the process howto

      【讨论】:

        猜你喜欢
        • 2013-10-06
        • 1970-01-01
        • 2012-03-16
        • 2013-02-05
        • 1970-01-01
        • 2011-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多