-
import threading # 全局变量:线程之间可以共享 num = 250 def run(): global num num += 10 print('子线程修改全局变量') if __name__ == '__main__': thr = threading.Thread(target=run) thr.start() thr.join() print('主进程结束', num)
- 线程锁
import threading money = 250 def run(n): global money for i in range(100000): ''' # 获取锁 lock.acquire() try: money += n money -= n except Exception as e: print('出现异常:', e) finally: # 释放锁 lock.release() ''' # 简化操作 with lock: money += n money -= n if __name__ == '__main__': # 创建线程锁 lock = threading.Lock() while True: thr1 = threading.Thread(target=run, args=(5,)) thr2 = threading.Thread(target=run, args=(10,)) thr1.start() thr2.start() thr1.join() thr2.join() if money != 250: break print(money)
- 线程类
from threading import Thread import time # 自定义线程类 class EmailThread(Thread): def __init__(self, email): super().__init__() self.email = email def run(self): print('邮件发送开始') print('发送邮件:', self.email) for i in range(1, 6): print('发送进度:{}%'.format(i * 20)) time.sleep(1) print('邮件发送结束') if __name__ == '__main__': print('主线程开始') thr = EmailThread('恭喜你中奖了!') thr.start() thr.join() print('主线程结束')
- 定时线程:延时线程
import threading import os def run(): os.system('calc') if __name__ == '__main__': # 创建定时线程:3秒后开始执行线程任务 t = threading.Timer(3, run) t.start() t.join()
- 信号传递:控制另一线程的执行
import threading import time def run(num): for i in range(num): # 等待条件成立,程序会阻塞 e.wait() print('子线程执行:{}'.format(i+1)) # 清除条件,再次wait又会阻塞 e.clear() if __name__ == '__main__': e = threading.Event() num = 3 thr = threading.Thread(target=run, args=(num,)) thr.start() for i in range(num): time.sleep(1) # 设置条件,wait处将不再阻塞 e.set() print('走你...')
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~