-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Labels
performancePerformance or resource usagePerformance or resource usagetopic-free-threadingtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
from threading import Thread
import time
class Cache:
def get(self, i):
return i
def get(i):
return i
client = Cache()
def bench_run(runner):
s = time.monotonic_ns()
for i in range(500000):
runner(i)
d = time.monotonic_ns() - s
print(f"{d:,}")
def bench_run_parallel(count, runner):
tl = []
for i in range(count):
t = Thread(target=bench_run, args=[runner])
tl.append(t)
t.start()
for t in tl:
t.join()
if __name__ == '__main__':
print("no threading class")
bench_run(client.get)
print("\nthreading class")
bench_run_parallel(6, client.get)
print("\nno threading function")
bench_run(get)
print("\nthreading function")
bench_run_parallel(6, get)
Processor: 2.6 GHz 6-Core Intel Core i7
PYTHON_CONFIGURE_OPTS='--disable-gil' pyenv install 3.13.0rc1
PYTHON_GIL=0 python benchmarks/run.py
Python 3.13.0rc1 experimental free-threading build (main, Sep 3 2024, 09:59:18) [Clang 15.0.0 (clang-1500.0.40.1)] on darwin
no threading class
34,626,126
threading class
313,298,115
318,659,929
319,484,384
321,183,006
320,650,898
321,589,085
no threading function
29,890,615
threading function
31,336,844
31,927,592
32,087,732
33,612,093
32,611,520
33,897,321
When using 6 threads, the instance method becomes approximately 10 times slower, while the function method shows comparable performance.
Python 3.12.5 (main, Sep 2 2024, 15:11:13) [Clang 15.0.0 (clang-1500.0.40.1)] on darwin
no threading class
27,588,484
threading class
79,383,431
113,182,075
111,067,075
107,679,440
63,825,808
92,679,231
no threading function
26,200,075
threading function
76,489,523
105,636,550
121,436,736
106,408,462
104,572,564
70,686,101
CPython versions tested on:
3.13
Operating systems tested on:
macOS
Linked PRs
lijiajun3029
Metadata
Metadata
Assignees
Labels
performancePerformance or resource usagePerformance or resource usagetopic-free-threadingtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error