简单<多线程< Python中的多处理,加快了进程

时间:2017-11-22 13:59:36

标签: python multithreading multiprocessing

关于这个惊人的answersthis blogpost,我还有一个小问题。也就是说,博客文章从基准测试中表明,由于GIL,线程将比没有线程更慢:

simple    threading   multiprocessing  
threads = 2       4.124      5.539       2.034 
threads = 3       6.391      13.772      3.376  
threads = 4       9.194      17.641      4.720  
  

因此线程甚至比简单执行慢。这是理解的   从上面讨论的GIL的行为,不应该让我们感到惊讶   现在

我以与帖子相同的方式对我自己的函数进行基准测试(将数据写入并将其写入文件)。我有以下结果:

simple 15 mins, threading: 10 mins, multiprocessing 5 mins. 

那么,为什么线程比没有任何线程的简单方法更快?

编辑: 功能的小描述

for thread in range(4):
    process = multiprocessing .Process(name=str(thread), target=perform_extraction, args=(ranging[thread],))
   #process = Thread(name=str(thread), target=perform_extraction, args=(ranging[thread],))
    process.start()
    processes.append(process)

for process in processes:
    process.join()

def perform_extraction(ranges):
     thread_name = multiprocessing.current_process().name
     #thread_name = currentThread().getName()
     for page in ranges:
        data = extract_data(page)
        write_data(data, thread_name+'.txt')

0 个答案:

没有答案