我的线程python代码有什么问题?

时间:2020-06-07 17:08:25

标签: python multithreading

这是我的代码:

   import os
import requests
from bs4 import BeautifulSoup
import time, random
from time import sleep
from concurrent.futures import ProcessPoolExecutor, as_completed
from concurrent.futures import ThreadPoolExecutor
from concurrent.futures import Future 
import concurrent.futures
from threading import Thread

def task():
    start_time = time.time()

    with open("url.txt") as f:
        for line in f:
            line2 = line.rstrip("\r\n")
            print(line2 + " Hello")
            sleep(1)
            #rechi = requests.get("http://"+line2, verify = False, timeout = 0.5)
            #con = BeautifulSoup(rechi.content, "html.parser")
            #title = con.title
            #print(title)

    print("My program took", time.time() - start_time, "to run")

def main():
    executor = ThreadPoolExecutor(20)
    future = executor.submit(task)
    print(future.result())

main()

使用线程执行程序所花费的时间与不使用线程执行程序所花费的时间相同...有人可以告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

只有在并行运行多个任务时,多线程处理才能使程序运行更快。 您的程序在单个线程中运行一次task。即使您task并行运行多次,程序输出的时间也仅是一次完成task所需的时间,而不是整个程序运行所需的时间。 这将打印main的时间并多次提交task

def main():
   start_time = time.time()
   executor = ThreadPoolExecutor(20)
   futures = []
   futures.append(executor.submit(task))
   futures.append(executor.submit(task))
   for i in futures:
       print(i.result())
   print("main took {} seconds".format(time.time()-start_time))