-- Back to Index --
In the post, I showed how to do mult-processing in Perl and Python.
Let's try multithreading in Perl:
#!/usr/bin/env perl use v5.38; use threads; sub worker($t_id) { say "Thread $t_id started."; sleep(2); say "Thread $t_id finished."; return $t_id; } say "Process ID: $$"; say "Starting 5 threads."; my @threads; for my $i (1..5) { my $thread = threads->create(\&worker, $i); push @threads, $thread; } $_->join foreach @threads;When you execute the above code, you would get something like below:
$ perl multi-threading.pl Process ID: 1996 Starting 5 threads. Thread 1 started. Thread 2 started. Thread 3 started. Thread 4 started. Thread 5 started. Thread 1 finished. Thread 5 finished. Thread 2 finished. Thread 3 finished. Thread 4 finished. Similarly in Python, you would do something like below:
#!/usr/bin/env python3 import os import time import threading def worker(): name = threading.current_thread().name print("Thread " + name + " started.") time.sleep(2) print("Thread " + name + " finished.") print('Process ID: ', os.getpid()) print('Starting 5 threads.') for i in range(5): threading.Thread(target=worker).start()When you execute the above code, you would get something like below:
$ python3 multi-threading.py Process ID: 1890 Starting 5 threads. Thread Thread-1 (worker) started. Thread Thread-2 (worker) started. Thread Thread-3 (worker) started. Thread Thread-4 (worker) started. Thread Thread-5 (worker) started. Thread Thread-5 (worker) finished. Thread Thread-3 (worker) finished. Thread Thread-2 (worker) finished. Thread Thread-1 (worker) finished. Thread Thread-4 (worker) finished.-- Back to Index --