def testFunc(file):
    result = []
print('Working in Process #%d' % os.getpid())
with open(file, 'r') as f:
    for line in f:
        if 'dog' in line:
            result.append(line)
return result

def collect_results(result):
    results.extend(result)
if __name__ == '__main__':
    p = mp.Pool(processes=2)
files = ['/path/to/file1.txt', '/path/to/file2.txt']
for f in files:
    p.apply_async(testFunc, args=(f,), callback=collect_results)
p.close()
p.join()
print(results)
многопроцессорность python apply_async использует только один процесс