python中创建多线程 - 前端笔记-#延迟模块 importtime #线程模块 importthreading #系统模块 ...

学习笔记

点滴记忆
回忆过往
首页>> web后端 >>python中创建多线程 - 前端笔记
# 延迟模块
import time
# 线程模块
import threading
# 系统模块
import os

my_list = []

# a函数
def a(num):
  for i in range(num):
    time.sleep(0.2)
    my_list.append(i)
    print(f'我是a函数{os.getpid()}')

# b函数
def b(num):
  for i in range(num):
    time.sleep(0.2)
    print(f'我是b函数{os.getpid()}my_list{my_list}')
    print(f'获取线程信息{threading.current_thread()}')

# 入口函数
if __name__ == "__main__":
    #创建多线程
  a_ding = threading.Thread(target=a, args=(6,))
  # b_ding = threading.Thread(target=b, kwargs={'num': 9})
  b_ding = threading.Thread(target=b, kwargs={'num'9}, daemon=True)  # daemon=True 参数的方式设置守护进程

  # 设置主线程守护
  a_ding.setDaemon(True)

  #启动线程
  a_ding.start()
  b_ding.start()

  #延时.5秒
  time.sleep(0.5)
  print('主线程结束')
# 主线程结束,等所有子线程完成任务 在结束
# 设置主线程守护  ,就是主线程结束,子线程 也结束
# 线程执行顺序是 无序的,是由cpu调度决定某个线程先执行的



# 线程之间是共享全局变量的
# 线程之间的资源竞争有问题 ,数据会不对 ,需要使用互斥锁解决
#使用互斥锁需要 在适当的地方 上锁解锁   以免造成死锁


# 使用互斥锁案例
import threading
import time

my_list = 0

def a():
  mutex.acquire() #上锁
  for i in range(1000000):
    global my_list
    my_list += 1
  mutex.release() #解锁

  print(my_list)

def b():
  mutex.acquire() #上锁
  for i in range(1000000):
    global my_list
    my_list += 1
  mutex.release() #解锁

  print(my_list)

#入口文件
if __name__ == '__main__':
  # 创建互斥锁
  mutex = threading.Lock()
  # 创建多线程
  a_ding = threading.Thread(target=a)
  b_ding = threading.Thread(target=b)
    #启动线程
  a_ding.start()
  b_ding.start()


×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » python中创建多线程

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)