如何在传入多个词典时使用subprocess.Popen在另一个文件中运行方法?

时间:2015-05-11 20:22:50

标签: python dictionary subprocess popen

p = subprocess.Popen(['python2.7', 'from some.path.foo import run_setup', 'import ast',
                      'nsvS = ' + str(new_system_variables), 'nsv = ast.literal_eval(nsvS)',
                      'uS = ' + str(user_dict), 'u = ast.literal_eval(uS)',
                      'run_setup(nsv, u)'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

以上是我的代码。我需要在后台运行run_setup方法。 run_setup实际上与我当前的实现一起运行,但字典中的值似乎都没有被传入.new_system_variables和user_dict是我试图传入的2个字典。提前感谢!

2 个答案:

答案 0 :(得分:4)

改为使用multiprocessing;

from multiprocessing import Process
from some.path.foo import run_setup

p = Process(target=run_setup, args=(new_system_variables, user_dict))
p.start()
p.join()

答案 1 :(得分:0)

您需要同时或两者删除字符串格式中= s周围的空格或在它们周围加上双引号,后者更好,因为它还可以处理参数中的任何空格。

可能还需要{ printf("%s %s %s", $3, $1, $2); for (i = 4; i <= NF; i++) printf("%s ", $i); printf("\n"); } 选项告诉python以下是命令。