Попробуйте выполнить сложную задачу, которая использует много ЦП, например, вычислить 15800000-й член последовательности Фибоначчи.Занимает около 2 секунд в одном потоке, используя IDLE.Попробуйте сделать это на двоих сейчас.
import threading
import timeit
def tesr():
a, b = 1, 0
for _ in range(15800000):
a, b = a + b, b
# Current thread
print("Current thread time:")
print(timeit.timeit(
stmt='tesr()',
setup='from __main__ import tesr',
number=1,
))
print()
# Single thread
print("Single thread time:")
print("(Should take about the same time as current)")
t = threading.Thread(target=tesr)
print(timeit.timeit(
stmt='t.start(); t.join()',
setup='from __main__ import t',
number=1,
))
print()
# Two threads
t1, t2 = (threading.Thread(target=tesr) for _ in range(2))
print("Two threads time:")
print("(Should take about double the current / single time)")
print(timeit.timeit(
stmt='t1.start(); t2.start(); t1.join(); t2.join()',
setup='from __main__ import t1, t2',
number=1,
))
Мой вывод:
Current thread time:
2.0613602900000387
Single thread time:
(Should take about the same time as current)
2.228870080999968
Two threads time:
(Should take about double the current / single time)
4.671865998000044