我想调用一个函数,该函数启动一个子进程,如下所示:

processrrd = Popen(args1, stdout=PIPE, stderr=PIPE, env={'LANG':'de_DE@euro','TZ':'Europe/Berlin'})
outputrrd = processrrd.communicate()
(output, error) = outputrrd


现在,我想使用multiprocessing.pool来对工作程序进行校验。
问题是最后一个Popen覆盖了变量outputrrd ist。
因此,是否可以创建特定的变量(processrrd),例如name1_processrrd?

问候。
斯特凡

UDPATE:
尝试过这个,但是过程的输出是相同的。

processrrd = []
processrrd.append((hostgroup+'_processrrd'))
print processrrd
    for name in processrrd:
        print name
        name = Popen(args1, stdout=PIPE, stderr=PIPE, env={'LANG':'de_DE@euro','TZ':'Europe/Berlin'})
        outputrrd = name.communicate()
    (output, error) = outputrrd

最佳答案

甚至不用考虑multiprocessing是否可以为您提供更好的方法(我想它确实可以,但一点也不了解),最好将每个句柄存储在某种数据结构中,例如dictlist,例如

# TODO Use name and key that works for you.
my_processes['de_DE@euro'] = Popen(args1, stdout=PIPE, stderr=PIPE, env={'LANG':'de_DE@euro','TZ':'Europe/Berlin'})

08-19 21:02