I am testing the following code and I would like to make sure if it is correct:
from threading import Thread
import cPickle
def get_user(start, end):
global users, vusers
for j in range(start,end):
if str(users[j]).find('@N') != -1:
vusers.append(users[j])
if __name__ == '__main__':
users = cPickle.load(open('nsid.dmp', 'r'))
vusers = []
jobs = [Thread(target=get_user, args=(0,1839))\
,Thread(target=get_user, args=(1840,3679))\
,Thread(target=get_user, args=(3680,5519))\
,Thread(target=get_user, args=(5520,7359))\
,Thread(target=get_user, args=(7360,9199))\
,Thread(target=get_user, args=(9200,11039))\
,Thread(target=get_user, args=(11040,12879))\
,Thread(target=get_user, args=(12880,14719))\
,Thread(target=get_user, args=(14720,16559))\
,Thread(target=get_user, args=(16560,18399))\
,Thread(target=get_user, args=(18400,20239))\
,Thread(target=get_user, args=(20240,20079))\
,Thread(target=get_user, args=(22080,23919))\
,Thread(target=get_user, args=(23920,25759))\
,Thread(target=get_user, args=(25760,27599))\
,Thread(target=get_user, args=(27600,29439))]
for jb in jobs:
jb.start()
for jb in jobs:
jb.join()
vusers = list(set(vusers))
out = open('validu.dmp', 'w')
cPickle.dump(vusers, out)
out.close()
So what I am trying to do is to run in parallel the function get_user
with different ranges. Of course, the function get_user
is more complicated than that and there are many other conditions to check but when I ran the code I couldn't see that is more time efficient. Is there anything wrong in my code and is it the proper way to write multithreaded function? If not, how I can make it run in parallel?