python 使用thread.Thread(target=fun_name)来添加线程,并使用new_Thread_name.start()函数来启动此线程
import time
import threading
def job():
print("T1 start!\n")
time.sleep(1)
print("T1 stop!\n")
def main():
added_thread = threading.Thread(target=job, name="T1")
added_thread.start()
print("All done!\n")
if __name__ == '__main__':
main()
T1 start!
All done!
T1 stop!
↑↑↑↑↑多线程不受主线程限制,主线程结束时多线程依然在运行
↓↓↓↓↓如果在将两个线程join在一起,那join下面的命令都会等到发出join命令的线程运行结束后再运行
def main():
added_thread = threading.Thread(target=job, name="T1")
added_thread.start()
added_thread.join()
print("All done!\n")
if __name__ == '__main__':
main()
T1 start!
T1 stop!
All done!
Python 多线程返回值的问题
线程是没有返回值的,所以得使用queue来存储多线程返回的数据
from queue import Queue
def job(l, q):
for i in range(len(l)):
l[i] = l[i]**2
q.put(l)
def multithreading():
q = Queue()
threads = []
data = [[1, 2, 3], [4, 5, 6], [7, 7, 7], [8, 8, 8]]
for i in range(4):
t = threading.Thread(target=job, args=(data[i], q))
t.start()
threads.append(t)
for thread in threads:
pass
results = []
for ii in range(4):
results.append(q.get())
print(results)
def main():
multithreading()
if __name__ == '__main__':
main()
[[1, 4, 9], [16, 25, 36], [49, 49, 49], [64, 64, 64]]