Difference between revisions of "Python Multithreading/Multiprocessing Examples"
(Created page with "--~~~~ ---- =Multithreading in Python= <br /> Warning! The multithreading module in Python does not provide true parallelism. Read up on the Global Interactive Lock if you w...") |
(→Example 1) |
||
Line 53: | Line 53: | ||
</source> | </source> | ||
+ | <br /> | ||
+ | ==Computing Pi, Serial Version== | ||
+ | <br /> | ||
+ | ::<source lang="python"> | ||
+ | # ComputingPy.py | ||
+ | # D. Thiebaut | ||
+ | # | ||
+ | # Computes an approximation of Pi by summing up | ||
+ | # a series of terms. The more terms, the closer | ||
+ | # the approximation. | ||
+ | # | ||
+ | |||
+ | def f( x ): | ||
+ | """ | ||
+ | The function being integrated, and which returns | ||
+ | an approximation of Pi when summed up over an interval | ||
+ | of integers. | ||
+ | """ | ||
+ | return 4.0 / ( 1 + x*x ) | ||
+ | |||
+ | |||
+ | def main(): | ||
+ | """ | ||
+ | Gets a number of terms from the user, then sums | ||
+ | up the series and prints the resulting sum, which | ||
+ | should approximate Pi. | ||
+ | """ | ||
+ | |||
+ | # get the number of terms | ||
+ | N = int( input( "> " ) ) | ||
+ | |||
+ | sum = 0.0 # where we sum up the individual | ||
+ | # intervals | ||
+ | deltaX = 1.0 / N # the interval | ||
+ | |||
+ | # sum over N terms | ||
+ | for i in range( N ): | ||
+ | sum += f( i * deltaX ) | ||
+ | |||
+ | # display results | ||
+ | print( "sum = %1.9f" % ( sum * deltaX ) ) | ||
+ | |||
+ | main() | ||
+ | |||
+ | </source> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | [[Category:Python]][[Category:CS352]] |
Revision as of 15:37, 25 January 2017
--D. Thiebaut (talk) 15:27, 25 January 2017 (EST)
Multithreading in Python
Warning! The multithreading module in Python does not provide true parallelism. Read up on the Global Interactive Lock if you want to learn more about this problem.
Example 1
# PythonThreading_Example1.py # D. Thiebaut # Taken and adapted from # https://pymotw.com/2/threading/ # # Python program illustrating how threads can # be created and started in Python from __future__ import print_function import threading import time def worker( Id ): """ thread worker function. It receives an Id, and prints a message indicating it's starting. waits 0.5 seconds, prints another message, and dies. """ print( 'Worker %d started\n' % Id ) time.sleep( 0.5 ) print( 'Worker %d finished\n' % Id ) return def main(): """ Spawns 5 threads that will run the worker function. Waits for the threads to finish, then stops. """ threads = [] for i in range(5): t = threading.Thread( target=worker, args=(i,) ) threads.append(t) t.start() print( "Main has spawn all the threads" ) # wait for all the threads to finish for t in threads: t.join() print( "Done!" ) main()
Computing Pi, Serial Version
# ComputingPy.py # D. Thiebaut # # Computes an approximation of Pi by summing up # a series of terms. The more terms, the closer # the approximation. # def f( x ): """ The function being integrated, and which returns an approximation of Pi when summed up over an interval of integers. """ return 4.0 / ( 1 + x*x ) def main(): """ Gets a number of terms from the user, then sums up the series and prints the resulting sum, which should approximate Pi. """ # get the number of terms N = int( input( "> " ) ) sum = 0.0 # where we sum up the individual # intervals deltaX = 1.0 / N # the interval # sum over N terms for i in range( N ): sum += f( i * deltaX ) # display results print( "sum = %1.9f" % ( sum * deltaX ) ) main()