Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
739 views
in Technique[技术] by (71.8m points)

python - Running multiple threads at the same time

So my goal is to have the do_something() function kickoff its own thread so that do_something() can run in parallel instead of having to wait for the previous one to finish. The problem is that it seems like it is not multithreading (meaning one thread finishes before the other one starts).

for i in range(len(array_of_letters)):

    if i == "a":
        t = threading.Thread(target=do_something())

        print "new thread started : %s"%(str(threading.current_thread().ident))     
        t.start()

I also have a current_thread().ident inside of the do_something() function but it seems like the identity of the thread that is started is the same as the main thread that the python script is running from. I think my approach is incorrect.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This is a common and easy to fall for mistake.

target=do_something() just executes your function at once in the main thread and passes None (the returning value of your function I suppose) as target function to the thread, which does not trigger any visible error; but does nothing either.

you have to pass the actual function not the result:

t = threading.Thread(target=do_something)

will work better


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...