Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的线程化python代码有什么问题?_Python_Multithreading - Fatal编程技术网

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

我的线程化python代码有什么问题?,python,multithreading,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 i

这是我的密码:

   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()

使用线程执行程序所需的时间与不使用线程执行程序所需的时间相同。。。有人能告诉我我做错了什么吗?

如果并行运行多个任务,多线程只会使程序更快。 您的程序在单个线程中运行一次
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))

我理解。。。如何并行运行task()多次?我应该在代码中添加什么?