在python中创建线程需要多长时间



我正在努力完成我的编程课程,但我只做了一个练习。

我必须计算在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()
threading.Thread(target=fun1, args=(55,155)).start()
end = time.time()
times.append(end-start)
print(times)

有时我得到10000个接近0.0或0.0的结果。

现在我不知道我创建测试是因为我不明白什么,还是可能结果是正确的,创建线程的时间不取决于已经创建的线程的数量?

你能帮我吗?如果这是一个令人担忧的解决方案,请解释为什么,或者如果它是正确的,请确认它?:(

因此有两种方法可以解释您的问题:

  1. 是否存在其他线程(尚未启动(会影响新线程的创建时间
  2. 后台运行的其他线程(已启动的线程(是否会影响新线程的创建时间

检查第一个

在这种情况下,您根本不启动线程:

import threading
import time
def fun1(a,b):
c = a + b
print(c)
time.sleep(100)


times = []
for i in range(10):
start = time.time()
threading.Thread(target=fun1, args=(55,155))  # don't start
end = time.time()
times.append(end-start)
print(times)

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]

正如你所看到的,时间大致相同(正如你所期望的(。

检查第二个

在这种情况下,我们希望之前创建的线程在创建更多线程时继续运行。因此,我们给每个线程一个永远不会完成的任务:

import threading
import time
def fun1(a,b):
while True:
pass # never ends


times = []
for i in range(100):
start = time.time()
threading.Thread(target=fun1, args=(55,155)).start()
end = time.time()
times.append(end-start)
print(times)

输出:

在100多次跑步中,第一次是0.0003440380096435547,而最后一次是0.3017098903656006,所以有相当大的增长幅度。

最新更新