如何使用子流程.Popen在传递多个字典的同时运行另一个文件中的方法?

2024-10-04 11:27:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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实际上是用我当前的实现运行的,但是字典中似乎没有一个值被传入。新的系统变量和用户字典是我试图传递的两个字典。提前谢谢!在


Tags: runfromimport字典evalsetupastus
2条回答

改用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()

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

您可能还需要一个'-c'选项来告诉python下面是一个命令。在

相关问题 更多 >