Python 线程/互斥锁/死锁/线程与进程对比

一、介绍
在Python中,想要实现多任务除了使用进程,还可以使用线程来完成,线程是实现多任务的另外一种方式。

概念:线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度,也就是说线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。

程序启动默认会有一个主线程,程序猿自己创建的线程可以成为子线程,多线程可以完成多任务。

1.导入线程模块

import threading

2.线程类Thread参数说明
Thread([group[, target[, name[, args[, kwargs]]]]])
group:线程组,目前只能使用None
target:执行的目标任务名
args:以元祖方式给执行任务传参
kwargs:以字典方式给执行任务传参
name:线程名,一般不用设置

3.启动线程
start方法

二、线程实例
1.多线程的使用

import threading
import time

def sing():
    #获取当前线程
    current_thread = threading.current_thread()
    print('sing', current_thread)
    for i in range(3):
        print('sing...')
        time.sleep(0.2)

def dance():
    #获取当前线程
    current_thread = threading.current_thread()
    print('dance', current_thread)
    for i in range(3):
        print('dance...')
        time.sleep(0.2)


if __name__ == '__main__':
    # 获取当前线程
    current_thread = threading.current_thread()
    print('main_thread', current_thread)

    #创建子线程
    sing_thread = threading.Thread(target=sing, name='sing_thread')
    dance_thread = threading.Thread(target=dance, name='dance_thread')
    #启动子线程
    sing_thread.start()
    dance_thread.start()

#运行结果
main_thread <_MainThread(MainThread, started 21476)>
sing <Thread(sing_thread, started 14472)>
sing...
dance <Thread(dance_thread, started 22648)>
dance...
dance...
sing...
dance...
sing...

2.线程执行带参数

import threading

def show_info(name, age):
    print(name, age)

if __name__ == '__main__':

    #以元祖方式传参,元祖元素要和函数参数顺序保持一致
    sub_thread = threading.Thread(target=show_info, args={
   '张三', 30})
    sub_thread.start()

    #字典方式传参,字典的key要和函数里面的参数名保持一致,没有顺序要求
    sub_thread = threading.Thread(target=show_info, kwargs={
   'age'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值