如何开始使用python 2.7中的并行处理?

时间:2018-07-22 15:11:43

标签: python concurrency parallel-processing

我是Python(2.7)的新手。我编写了一个简单的程序,该程序使用tabula-pyPyPDF2读取10,000张500页pdf中的表,并为每个表编写一个.csv。最终,我计划将提取的数据写入SQL数据库,但目前仅.csvs。我可以通过大学的远程环境访问多个核心,我想通过并行运行来加快程序运行速度。并行进程应该能够完全独立运行,每个进程分别在不同的pdf上运行并写入单独的csv。处理顺序无所谓

我已经阅读了有关多线程和多处理的内容,但是我认为我的问题不需要复杂的内容,因为永远不需要同时访问相同的资源。

采用8个CPU内核来加速此任务的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我不确定您是要限制IO还是CPU,但不确定是CPU受限(我认为这是您最好的选择)threading might not be the option you seek

  

何时使用线程还是进程?

  • 进程加快了CPU密集型的Python操作,因为 他们受益于多个核心,避免了GIL。
  • 线程最适合IO任务或涉及外部系统的任务,因为线程可以更有效地合并其工作。工艺需要腌制 将它们结合起来需要花费时间。
  • 由于GIL,线程无法在python中完成CPU密集型任务。

Another helpful kickstart can be found herehere。克里斯·基尔(Chris Kiehl)总结了The 2015 upvoted answer hereexamples and explanation可能也有帮助。为了快速参考;

from multiprocessing.dummy import Pool as ThreadPool 
pool = ThreadPool(4) 
results = pool.map(my_function, my_array)

哪个是以下版本的多线程版本:

results = []
for item in my_array:
    results.append(my_function(item))

祝你好运!