如何为每个目录创建进程?

时间:2012-10-02 00:25:51

标签: python process directory fork

我很难为当前目录中的每个文件夹创建子进程,以便对它们执行某些功能(Python 2.7)。

我的想法是:

  • 首先使用 os.listdir(路径)获取所有文件夹,然后使用 os.path.isdir(file_path)过滤文件。
  • 计算文件夹并计算需要多少分叉例如: 5个文件夹我需要3个分叉(2³ - 1 = 7个子进程)
  • 迭代所需数量的叉子,并在每次迭代中执行文件夹的代码,一次两个,从包含所有文件夹路径的列表中获取路径。

    for counter in needed_forks:
       folder_pid = os.fork()
       if pid:
          some_function(folder_list[counter])
       else:
          some_function(folder_list[counter+1])
    

我无法得到任何好的输出,主要是因为,我认为,每次迭代中重复的folder_list的一个索引。 任何帮助都非常感激,我正忙着完成这项任务,试图立即学习多处理和Python。

感谢。

1 个答案:

答案 0 :(得分:2)

为什么不让一个进程继续分叉?然后您不必尝试计算要使用的货叉数量:

for d in directories:
    if os.fork():
        # parent
        continue
    else:
        # child
        # handle d...
        break # don't keep going

当然,我质疑使用fork以这种方式处理目录的智慧......