|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# 反而比单线程慢。
# 是cpu限制了吗?双核cpu
# 线程暴增!
# 方法或者方向错了?
- '''
- # 多线程加递归
- # BUG未知
- # 测试版
- # 可以导入re模块正则匹配文件
- # by GIN
- # 2020/07/28
- '''
- #coding=utf-8
- import os
- import threading
- import time
- COUNT = 0 #文件数量
- P = r'd:\\'
- def test(fun):
- def pk(*args, **kw):
- b = time.time()
- fun(*args, **kw)
- print(time.time() - b)
- return pk
- def dir_parse(path):
- # global COUNT
- # print(path)
- for root,dirs,files in os.walk(path):
- #print(path, '===',len(files)) #当前文件夹下面的文件数量
- global COUNT
- COUNT += len(files)
- if dirs:
- th = [mythread(dir_parse, root + os.sep + i) for i in dirs]
- for i in th:
- i.start()
- for j in th:
- j.join()
- dirs.clear()
- # return [os.path.join(root,i) for i in dirs]
- else:
- return None
- class mythread(threading.Thread):
- def __init__(self, fun, agrs):
- threading.Thread.__init__(self)
- self.fun = fun
- self.agrs = agrs
- def run(self):
- self.fun(self.agrs)
- def nothread(path):
- for root,dirs,files in os.walk(path):
- global COUNT
- # print(dirs)
- COUNT += len(files)
- @test
- def main():
- dir_parse(P)
- print(COUNT)
- @test
- def main1():
- global COUNT
- COUNT = 0
- nothread(P)
- print(COUNT)
- if __name__ == '__main__':
- main()
- main1()
复制代码
result:
- 20926
- 0.5148007869720459
- 20926
- 0.42220091819763184
- 请按任意键继续. . .
复制代码 |
|