所以我必须制作一个程序,在文件夹中包含的文件中搜索关键字,并打印它在一个文件夹中使用的次数。为了减少搜索时间,我决定将文件夹分成两个文件夹,并有两个并行运行的独立功能,每个功能都搜索不同的文件夹。
以下是搜索文件的两个功能之一(另一个相同(:
pathText1 = '/Papers/scripts1'
countmatch1 = 0;
matrix1 = [[]]
for filename1 in os.listdir(pathText1):
fileDir1 = pathText1 + '/' + filename1
fileText1 = open(fileDir1, "r",encoding='utf8')
content1 = fileText.read()
content1 = content1.lower()
countn1 = content1.count(keyword)
if count1 > 5:
print ('The word: ' + keyword + ' | was found ' + str(count1) + ' times in the file: ' + filename1)
countmatch1 = countmatch1 + 1
matrix1.append([filename1,count1])
print('found ' + countmatch1 + ' matches')
del matrix1[0]
return matrix1
所以,现在我有一个问题,关于如何实现多处理,并使其具有将矩阵返回到主的两个函数。提前感谢您的帮助!
您应该使用共享变量。查看示例:
from multiprocessing import Process, Manager
def your_function(first_param, second_param):
# Your work here to search keywords
if __name__ == '__main__':
manager = Manager()
# shared variable
matrices = manager.list()
jobs = []
# Range defines how many times you want to call the method.
for each_process in range(3):
process = Process(target=your_function, args=(first_param, second_param))
jobs.append(process)
process.start()
for each_process in jobs:
each_process.join()
print(matrices)
此外,您可以从这里查看更详细的教程。
您已经使用了python3中的多处理库吗?还是您在寻找实施方面的疑虑?