import os
import time
import threading
from threading import Thread
def cpu_waster(i: int) -> None:
name = threading.current_thread().getName()
print(f"{name} doing {i} work")
time.sleep(3)
def display_threads() -> None:
print("-" * 10)
print(f"Current process PID: {os.getpid()}")
print(f"Thread Count: {threading.active_count()}")
print("Active threads:")
for thread in threading.enumerate():
print(thread)
def main(num_threads: int) -> None:
display_threads()
print(f"Starting {num_threads} CPU wasters...")
for i in range(num_threads):
thread = Thread(target=cpu_waster, args=(i,))
thread.start()
display_threads()
if __name__ == "__main__":
num_threads = 5
main(num_threads)
$ python3 multithreading.py
———-
Current process PID: 580482
Thread Count: 1
Active threads:
<_MainThread(MainThread, started 281472949920800)>
Starting 5 CPU wasters…
Thread-2 (cpu_waster) doing 1 work
Thread-3 (cpu_waster) doing 2 work
Thread-4 (cpu_waster) doing 3 work
/home/vagrant/dev/rust/parallel/python/multithreading.py:7: DeprecationWarning: getName() is deprecated, get the name attribute instead
name = threading.current_thread().getName()
Thread-1 (cpu_waster) doing 0 work
Thread-5 (cpu_waster) doing 4 work
———-
Current process PID: 580482
Thread Count: 6
Active threads:
<_MainThread(MainThread, started 281472949920800)>
うーむ、中々難儀やのう