如何同步执行进程?

时间:2017-05-14 11:58:06

标签: python multithreading multiprocessing

我正在创建一个通过系统目录的程序,并更改目录中每个文件的文件扩展名。它工作得很好,但python搜索整个目录,然后它更改文件扩展名,这个方法需要很长时间,所以我尝试使用多进程库在syncro中运行这两个进程。不知道它不起作用加上它没有显示任何错误,所以我不知道做错了什么。任何人都可以帮我解决吗? 谢谢

CODE:

import os
from multiprocessing import Process

c_phpfiles=[]
def walk():
    for dirpath,dirs,files in os.walk("C:\\Users\\user\\Desktop\\Newfolder"):
        for filename in files:
            fname = os.path.join(dirpath,filename)
            c_phpfiles.append(fname)

def change(files):
    for name in files:
        print name
        with open(name, 'wb') as fo:
            fo.write('this is a test')
        os.rename(name,name+'.test')

if __name__ == '__main__':
    p = Process(target=walk)
    p1 = Process(target=change, args=(c_phpfiles,))
    p.start()
    p1.start()
    p.join()
    p1.join()

1 个答案:

答案 0 :(得分:0)

在目录(树)中创建文件列表。

编写一个将文件路径作为参数并重命名的函数。

创建multiprocessing.Pool,并使用其map方法将该函数应用于列表。