将数组传递给slave python脚本

时间:2013-09-10 15:33:42

标签: python arrays subprocess

我对python很新 我学会了如何将参数作为字符串或浮点数传递给从属脚本 作为一个例子,这里是主脚本:

#main script (mainscript.py)
import subprocess, sys
import numpy as np

x = np.linspace(0.5,3.2,10)

for i in range(x.size) :
    subprocess.call([sys.executable,'slavescript.py',
                     '%s' %sys.argv[1], '%s' %sys.argv[2], '%s' %xpnt[i]])

这里是奴隶脚本:

#slave script (slavescript.py)

import sys

sys.argv[1] = str(sys.argv[1])
sys.argv[2] = int(sys.argv[2])
sys.argv[3] = float(sys.argv[3])

...
...

现在,如果在python中我运行以下命令:

run mainscript.py N 5

然后slavescript.py开始使用N作为字符串,5作为整数,第三个参数转换为float。 slavescript.py运行m次,其中m是数组x的大小。

我想立即传递数组x的全部内容,即在主脚本中没有for循环。我认为subprocess.call只能在其参数中包含字符串......我希望有人有时间帮助我或给我一些提示。

感谢您的关注。 Noctu

1 个答案:

答案 0 :(得分:0)

使用单独进程的唯一原因是您需要并行处理。如果你确实需要,那么如果你管理很多工人,就要使用像芹菜这样的东西。

如果您确实认为适合自己推送,则需要减少要发送到文本表示的内容。我建议使用json模块。

如果你不需要一个单独的进程,只需导入另一个python模块,并直接在代码中访问它的功能(它应该已经包含在函数中)。