这是我的代码:
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()
使用线程执行程序所花费的时间与不使用线程执行程序所花费的时间相同...有人可以告诉我我做错了什么吗?
答案 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))