我正在尝试处理超过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()
任何帮助或方向都是非常有学徒的
答案 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()
中阅读一些关于多处理模块的内容
答案 1 :(得分:1)
问题是在启动线程之前正在评估Sort
和Sort2
。当您说Sort(...)
时,()
是执行Sort
函数的运算符。
This answer可以更多地了解您的问题。
您必须使用args
构造函数的Thread
参数。例如:
Thread(target=Sort, args=(0,100)).start()