教程

https://www.runoob.com/python/python-multithreading.html

https://docs.python.org/zh-cn/3/library/threading.html



常用函数

threading.currentThread(): 返回当前的线程变量。
threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

.start()启动线程活动。
.join([time])   等待至线程中止
run(): 用以表示线程活动的方法
isAlive(): 返回线程是否活动的。
getName(): 返回线程名。
setName(): 设置线程名。

demo

import threading
import time

def test():
    for i in range(5):
        print(threading.current_thread().name+' test ',i)
        time.sleep(0.5)

#启动线程
thread = threading.Thread(target=test,name='TestThread')
# thread = threading.Thread(target=test)
thread.start()
#等待线程执行完成
thread.join()


for i in range(5):
    print(threading.current_thread().name+' main ', i)
    print(thread.name+' is alive ', thread.isAlive())
    time.sleep(1)

线程传参

thread.start_new_thread ( function, args[, kwargs] )
args - 传递给线程函数的参数,他必须是个tuple类型。
kwargs - 可选参数。
#方法1
def thread_example(name, age):
    print("My name is %s and I am %d years old." % (name, age))
t = threading.Thread(target=thread_example, args=("Michael", 25))
#方法2
def thread_example(name, age):
    print("My name is %s and I am %d years old." % (name, age))
t = threading.Thread(target=thread_example, kwargs={"age": 25, "name": "Michael"})
thread.start()
方法3
def thread_example(name, age, sex="male"):
    print("My name is %s, I am %d years old and I am a %s." % (name, age, sex))
t = threading.Thread(target=thread_example, args=("Michael", 25), kwargs={"sex": "female"})