python代码实现简单的多线程

线程

在程序里一个执行路线就叫做线程,线程是程序执行的最小单位.

多线程

多线程类似于同时执行多个不同程序,多线程运行有如下优点:

  • 使用线程可以把占据长时间的程序中的任务放到后台去处理。
  • 程序的运行速度可能加快
  • 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。
Python3 通过两个标准库 _thread 和 threading 提供对线程的支持,由于_thread只是为了兼容python2的thread模块,所以推荐使用threading模块实现多线程。

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

Python中使用线程有两种方式:函数或者用类来包装线程对象。
函数方式:
  • 导入threading包
  • 对象名= threading.Thread(target = 函数名) 创建线程对象
  • 对象名.start() 创建线程

   注:由于代码执行过快,为了显示效果,使用sleep延时执行。
代码:

import threading
import time


def sing(num):
    for i in range(num):
        print("sing%d" % i)
        time.sleep(0.5)


def dance(num):
    for i in range(num):
        print("dancing%d" % i)
        time.sleep(0.5)


def main():
    """创建启动线程"""
    t_sing = threading.Thread(target=sing, args=(5,))
    t_dance = threading.Thread(target=dance, args=(6, ))
    t_sing.start()
    t_dance.start()


if __name__ == '__main__':
    main()

运行结果:
这里写图片描述

继承方式:
  • 导入threading包
  • 创建一个类继承Thread类,重写run方法
  • 创建类对象,调用start()方法创建线程

   注:由于代码执行过快,为了显示效果,使用sleep延时执行。
代码:

import threading
import time


class MyThread(threading.Thread):
    def run(self):
        for i in range(3):
            time.sleep(1)
            msg = "I'm "+self.name+' @ '+str(i)
            print(msg)


def test():
    for i in range(5):
        t = MyThread()
        t.start()


if __name__ == '__main__':
    test()

运行结果:
这里写图片描述

  • 43
    点赞
  • 289
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Python是一门支持多进程和多线程的编程语言,通过多进程和多线程,程序可以充分利用系统资源,提高程序处理效率,实现更加复杂的并发操作。 在python中,可以使用multiprocessing实现多进程,也可以使用threading实现多线程。下面,我们来看一下具体的代码实例。 多进程实现: ```python import multiprocessing def worker(num): print('Worker %d is running...' % num) if __name__ == '__main__': for num in range(5): p = multiprocessing.Process(target=worker, args=(num,)) p.start() ``` 在上面的代码中,我们定义一个worker函数和主函数。主函数创建5个进程,每个进程都调用worker函数。通过multiprocessing库的Process类创建进程,target参数传入worker函数,args参数传入函数所需的参数。 多线程实现: ```python import threading def worker(num): print('Worker %d is running...' % num) if __name__ == '__main__': for num in range(5): t = threading.Thread(target=worker, args=(num,)) t.start() ``` 在上面的代码中,我们同样定义了一个worker函数和主函数。主函数创建5个线程,每个线程都调用worker函数。通过threading库的Thread类创建线程,target参数传入worker函数,args参数传入函数所需的参数。 需要注意的是,多进程和多线程实现方式略有不同。在多进程中,由于每个进程独立占用一部分系统资源,需要使用if __name__ == '__main__':来判断是否是主进程。而在多线程中,由于所有线程共享同一进程内的资源,没有这个问题。 以上就是python实现多进程和多线程代码实例。需要根据具体场景来选择使用哪种方法实现并发操作。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值