并行 python 和子进程
Parallel python and subprocess
我正在尝试使用并行 Python (pp) 模块创建集群。
我已经设置了集群。节点可用:
./ppserver.py -p 35000 -i 127.0.0.1 -s "mysecret"
master 也已配置并提交作业:
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
已完全调试,有什么想法吗?
那是因为您的路径包含 ~
,默认情况下不会展开。
2 种解决方法:
- 通过 shell(不推荐)向 运行 添加
shell=True
参数
- 最好的方法:使用
os.path.expanduser
像这样:
proc = subprocess.check_output(['python',
os.path.expanduser('~/path/to/python_script.py'),
'--argu1', 'argu1',
'--argu2', 'argu2',
我正在尝试使用并行 Python (pp) 模块创建集群。 我已经设置了集群。节点可用:
./ppserver.py -p 35000 -i 127.0.0.1 -s "mysecret"
master 也已配置并提交作业:
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
已完全调试,有什么想法吗?
那是因为您的路径包含 ~
,默认情况下不会展开。
2 种解决方法:
- 通过 shell(不推荐)向 运行 添加
shell=True
参数 - 最好的方法:使用
os.path.expanduser
像这样:
proc = subprocess.check_output(['python',
os.path.expanduser('~/path/to/python_script.py'),
'--argu1', 'argu1',
'--argu2', 'argu2',