import os
from multiprocessing import Process,Queue,Lock,Value,Pool,Manager
import multiprocessing
def line_num_nolock(q):
while not q.empty():
path=q.get()
print(path)
with open(path,'r',encoding='utf-8') as fp:
lines=fp.readlines()
char=fp.read()
line_num=len(lines)
char_num=len(char)
print(line_num)
with open('D:\\result.txt','a+',encoding='gbk') as fp:
fp.write('%s:%s,%s\n'%(os.path.basename(path),line_num,char_num))
def files(path,q):
for root,dirs,files in os.walk(path,topdown=False):
for name in files:
if name.split('.')[-1]=='py':
q.put(os.path.join(root,name))
print(q)
print('队列写入完成')
if __name__=='__main__':
lock=Lock()
manager=Manager().Queue()
print('1')
files('C:\\Users\\卢雪\Desktop\\作业-python', manager)
pool=Pool(multiprocessing.cpu_count()) #查询电脑cpu核数,创建跟核数数量一样的进程数
pool.apply_async(line_num_nolock,(manager,))
pool.close()
pool.join()
print('sucessfully')
使用进程池统计py文件的行数和字符数,并按照filename:lineNumber,charNumber写入txt文件
于 2019-07-05 08:06:47 首次发布