你可以这样做:
import multiprocessing
if __name__ == "__main__":
calc_pool = multiprocessing.Pool(4)
path = 'list with your paths'
methode = calc_pool.map(get_names, path)
您可能需要编辑您的方法,因此它将包含 python 文件的列表拆分为 4 个子列表,在这种情况下,每个进程将处理一个子列表,这些子列表一起是您的完整列表。例如:
import multiprocessing
if __name__ == "__main__":
calc_pool = multiprocessing.Pool(4)
path = 'list with your paths'
path = split(path, parts = 4)
data_pack = ((path[0]), (path[1]), (path[2]), (path[3]))
methode = calc_pool.map(get_names, data_pack)
在这种情况下,您必须打包数据,因为.map 只接受一个参数。在这种情况下,split 方法会使用以下路径拆分您的列表:
path = ['path_0', 'path_1', 'path_2', 'path_3']
类似的东西:
path = [['path_0'], ['path_1'], ['path_2'], ['path_3']]
请记住,多处理进程不共享数据,并且您希望提交尽可能少的数据,因为向每个进程发送数据非常慢。
这也明显增加了 CPU 和 RAM 的使用率。
我之所以选择multiprocessing 而不是threads 的原因是multiprocessing 使您能够实际并行运行任务,而threads 主要为您提供I/O 任务的优势。
编辑:还请记住,if __name__ == "__main__": 在 Windows 系统上是必需的,multiprocessing 才能正常工作。