多处理文件读取和输出

时间:2014-08-08 08:49:32

标签: python multithreading

我正在尝试处理超过1000个目录中的文件。但是,由于目录的大小非常大,我必须同时运行该进程以节省时间。 dir [:100]使得该函数只有100个目录要处理。但是,第二个线程在第一个Thread完成之前不会启动。

def sort(start,end):
 dir = os.list(filepath)
 dir = dir [start:end]
 for file in dir:
  ~process~
  print result 

if __name__ == '__main__':
 Thread(target = Sort(0,100)).start()
 Thread(target = Sort(100,200)).start()

我尝试将Sort函数复制为Sort2():但这会产生相同的结果

Thread(target = Sort(0,100)).start()
Thread(target = Sort2(100,200)).start()

任何帮助或方向都是非常有学徒的

2 个答案:

答案 0 :(得分:1)

import multiprocessing

def worker_sort():
    # includes the code of your sorting function
    pass

if __name__ == '__main__':
    jobs = []
    for i in range(2):
        p = multiprocessing.Process(target=worker_sort, args=(0,100))
        jobs.append(p)
        p.start()

我建议在official documentation

中阅读一些关于多处理模块的内容

答案 1 :(得分:1)

问题是在启动线程之前正在评估SortSort2。当您说Sort(...)时,()是执行Sort函数的运算符。

This answer可以更多地了解您的问题。

您必须使用args构造函数的Thread参数。例如:

Thread(target=Sort, args=(0,100)).start()