how can I make it work?
self.python
howmuchistoday at gmail.com
Sun Jul 8 22:41:32 EDT 2012
2012년 7월 9일 월요일 오전 11시 2분 41초 UTC+9, self.python 님의 말:
> it's a finder using threading to accelerate but it never works..
> and I have no idea why it doesn't work:(
> it doesn't work too after changing threading to multiprocessing..
> how can I make it work? or at least I know what's the problem...
> plz help the poor newbie...
>
>
>
> import os,threading,multiprocessing
>
>
> def finder(path,q):
> for x in os.walk(unicode(path)):
> if x[1]:
> for dirname in x[1]:
> if target in dirname.lower():
> q.put(os.path.join(x[0],dirname))
> if x[2]:
> for name in x[2]:
> if target in name.lower():
> q.put(os.path.join(x[0],name))
>
> q.put(1)
>
> def printer(q):
> cmd=0
> while 1:
> tmp=q.get()
> if tmp==1:
> cmd += 1
> continue
> if cmd ==thnum:
> break
> print tmp
>
> if __name__ =="__main__":
> q=multiprocessing.JoinableQueue()
> ini=os.walk(u"C:\\").next()
> thnum=len(ini[1])
> target=raw_input("what you wanna get\n")
>
> p=multiprocessing.Process(target=printer,args=(q,))
> p.daemon=1
> p.start()
>
> for i in xrange(thnum):
> t=threading.Thread(target=finder,args=(ini[1][i],q,))
> t.start()
> print i," started"
> q.join()
It shows
0 started
1 started
...
22 started
but then it show nothing
the cursur blinks continuously
but the result never printed(maybe not produces?)
More information about the Python-list
mailing list