【问题标题】:Parallel python and subprocess并行 python 和子进程
【发布时间】:2017-09-08 08:22:46
【问题描述】:

我正在尝试使用 Parallel Python (pp) 模块创建一个集群。 我已经建立了集群。节点可用:

./ppserver.py -p 35000 -i 127.0.0.1 -s "mysecret"

master也配置好了,jobs也提交了:

ppservers=("node-1:35000", "node-2:35000")
job_server = pp.Server(ppservers=ppservers, secret="mysecret")

f1 = job_server.submit(SomeFunction, argus1), modules=('subprocess',))
f2 = job_server.submit(SomeFunction, argus2), modules=('subprocess',))

a = f2()
b = f1()

一些函数:

def SomeFunction(argus):
  proc = subprocess.check_output(['python',
                    '~/path/to/python_script.py',
                    '--argu1', argus[0],
                    '--argu2', argus[1],
    ])
  return proc

python_script.py 与 youtube api 对话并将数据写入 mysql 数据库。

在执行时我收到此错误:

An error has occured during the function execution
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/ppworker.py", line 90, in run
    __result = __f(*__args)
  File "<string>", line 16, in SomeFunction
  File "/usr/lib/python2.7/subprocess.py", line 574, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['python', '~/path/to/python_script.py', '--argu1', 'argu1', '--argu2', 'argu2']' returned non-zero exit status 2

python_script.py 已完全调试,有什么想法吗?

【问题讨论】:

    标签: python python-2.7 subprocess parallel-python


    【解决方案1】:

    那是因为你的路径包含一个~,默认情况下是不展开的。

    两种解决方法:

    • 添加 shell=True 参数以通过 shell 运行(不推荐)
    • 最好的方法:使用os.path.expanduser

    像这样:

    proc = subprocess.check_output(['python',
                        os.path.expanduser('~/path/to/python_script.py'),
                        '--argu1', 'argu1',
                        '--argu2', 'argu2',
    

    【讨论】:

      猜你喜欢
      • 2012-04-02
      • 2020-06-16
      • 2014-06-29
      • 1970-01-01
      • 2013-05-03
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多