1.线程守护
守护线程是当程序执行完毕后,无论线程是否执行完毕都会强制退出线程,一般将不重要的线程设置为守护线程。
实例代码如下:
import threading
import time
def run(n):
time.sleep(3)
print('task', n)
def main():
t1 = threading.Thread(target=run, args=('t1',))
t1.setDaemon(True)
t1.start()
print('end')
if __name__ == '__main__':
main()
result:
D:\software\python\python.exe D:/python_record/thread_api_demo.py
end
Process finished with exit code 0
这里是因为t1线程为守护线程,当主线程已经输出end而t1线程尚未完成,只能被迫强制结束。所以最后的输出结果中看不到预期的task,t1
2.多线程共享全局变量
多线程共享全局变量是使用global在线程执行的函数中定义全局变量,从而使得线程能够从程序中读取和修改全局变量的值,达到线程之间共享全局变量的目的。
import threading
g_num = 100
def work1():
global g_num
for _ in range(3):
g_num += 1
print('in work1 g_num is: %d' % g_num)
def work2():
global g_num
for _ in range(3):
g_num -= 3
print('in work2 g_num is: %d' % g_num)
def main():
t1 = threading.Thread(target=work1)
t2 = threading.Thread(target=work2)
t1.start()
t2.start()
if __name__ == '__main__':
main()
result:
in work1 g_num is: 103
in work2 g_num is: 94