用python创建线程需要多长时间
我正试图完成我的编程课程,但我被一个练习卡住了 我必须计算在Python中创建线程需要多少时间,以及它是否取决于创建的线程数量 我写了一个简单的脚本,我不知道它是否好:用python创建线程需要多长时间,python,multithreading,Python,Multithreading,我正试图完成我的编程课程,但我被一个练习卡住了 我必须计算在Python中创建线程需要多少时间,以及它是否取决于创建的线程数量 我写了一个简单的脚本,我不知道它是否好: import threading import time def fun1(a,b): c = a + b print(c) time.sleep(100) times = [] for i in range(10000): start = time.time() thr
import threading
import time
def fun1(a,b):
c = a + b
print(c)
time.sleep(100)
times = []
for i in range(10000):
start = time.time()
threading.Thread(target=fun1, args=(55,155)).start()
end = time.time()
times.append(end-start)
print(times)
在times[]中,我得到了接近0.0甚至0.0的10000个结果
现在我不知道我是否因为不理解某些东西而创建了测试,或者可能结果是正确的,创建线程的时间不取决于已经创建线程的数量
你能帮我吗?如果是worng解决方案,请解释原因,或者如果正确,请确认它:) 所以有两种方法来解释你的问题:
导入线程
导入时间
def fun1(a、b):
c=a+b
印刷品(c)
时间。睡眠(100)
时间=[]
对于范围(10)内的i:
开始=时间。时间()
threading.Thread(target=fun1,args=(55155))#不启动
end=time.time()
times.append(结束-开始)
印刷(次)
10次运行的输出:
[4.696846008300781e-05, 2.8848648071289062e-05, 2.6941299438476562e-05, 2.5987625122070312e-05, 2.5987625122070312e-05, 2.5987625122070312e-05, 2.5987625122070312e-05, 2.5987625122070312e-05, 2.5033950805664062e-05, 2.6941299438476562e-05]
正如你所看到的,时间大致相同(正如你所预料的)
检查第二个
在这种情况下,我们希望前面创建的线程在创建更多线程时保持运行。因此,我们给每个线程一个永远无法完成的任务:
导入线程
导入时间
def fun1(a、b):
尽管如此:
过不完
时间=[]
对于范围(100)内的i:
开始=时间。时间()
threading.Thread(target=fun1,args=(55155)).start()
end=time.time()
times.append(结束-开始)
印刷(次)
输出:
超过100次,第一次用了
0.0003440380096435547
,而最后一次用了0.3017098903656006
,因此增加幅度很大。因此有两种方法来解释你的问题:
导入线程
导入时间
def fun1(a、b):
c=a+b
印刷品(c)
时间。睡眠(100)
时间=[]
对于范围(10)内的i:
开始=时间。时间()
threading.Thread(target=fun1,args=(55155))#不启动
end=time.time()
times.append(结束-开始)
印刷(次)
10次运行的输出:
[4.696846008300781e-05, 2.8848648071289062e-05, 2.6941299438476562e-05, 2.5987625122070312e-05, 2.5987625122070312e-05, 2.5987625122070312e-05, 2.5987625122070312e-05, 2.5987625122070312e-05, 2.5033950805664062e-05, 2.6941299438476562e-05]
正如你所看到的,时间大致相同(正如你所预料的)
检查第二个
在这种情况下,我们希望前面创建的线程在创建更多线程时保持运行。因此,我们给每个线程一个永远无法完成的任务:
导入线程
导入时间
def fun1(a、b):
尽管如此:
过不完
时间=[]
对于范围(100)内的i:
开始=时间。时间()
threading.Thread(target=fun1,args=(55155)).start()
end=time.time()
times.append(结束-开始)
印刷(次)
输出:
在100多次运行中,第一次运行的时间
0.0003440380096435547
,而最后一次运行的时间0.3017098903656006
,因此有相当大的增长幅度。当你说“这是否取决于已经创建的数量”时您是否希望测量其他线程的存在是否会影响创建时间,或者后台运行的其他线程(即启动线程)是否会影响创建时间?那会很不一样,我想是第一个。对任务进行了描述,以便我能够以任何方式对其进行解释。我得到了运行该任务的合理数字。无论如何,您可能希望测量循环开始和结束时的时间,然后计算线程数的平均值。当您说“这是否取决于已创建线程的数量”时,您希望测量其他线程的存在是否会影响创建时间,或者其他线程是否在后台运行(即启动线程)影响创建时间?这将是非常不同的。我认为这是关于第一个任务。任务的描述是为了让我能够以任何方式对其进行解释。我得到了运行该任务的合理数字。无论如何,您可能希望测量循环开始和结束时的时间,然后对线程数进行平均。非常感谢@Aziz:)非常感谢@Aziz:)