1

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

我的想法是:

  • 首先使用os.listdir(path)获取所有文件夹并使用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。

谢谢。

4

1 回答 1

2

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

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

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

于 2012-10-02T00:29:43.627 回答