October
31st,
2012
Below an example I did for my office mate who wants to get his python code to run on several cores.
Pretty usefull for those who are just starting threads.
Pretty usefull for those who are just starting threads.
#!/usr/bin/python
'''
@author: Ricardo Leal
'''
import time
import threading
from datetime import datetime
# Lock
lock = threading.Lock()
def myfunc(i):
''' Function to be threaded '''
print "Tread %d is doing NON critical stuff" % i
time.sleep(0.5)
lock.acquire()
print "Tread %d is doing critical stuff"% i
time.sleep(0.5)
print "Tread %d has finished doing critical stuff" % i
lock.release()
if __name__ == '__main__':
t_start = datetime.now()
thread_list = []
for i in range(10):
print "Launching thread: ", i
t = threading.Thread(target=myfunc, args=(i,))
# Put threads in a list
thread_list.append(t)
# optional (rather than putting them on a list)
# t.start()
# Start all threads
[x.start() for x in thread_list]
print "Waiting for the threads to do their job!"
# Wait for all of them to finish
[x.join() for x in thread_list]
print "Main: I haved waited for the threads to finish!"
t_end = datetime.now()
t_total = t_end - t_start
print "Total time: ", t_total
print "Main has finished!"