python多线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python多线程相关的知识,希望对你有一定的参考价值。

多线程运行(类似于同时执行多个不同程序)的优点:
1. 把占据时间长的程序放到后台处理
2. 可以显示处理的进度
3. 程序的运行速度可能加快
4. 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

线程的特点:
1. 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口
2. 线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
3. 每个线程都有他自己的一组CPU寄存器,称为线程的上下文。线程的上下文反映了线程上次运行该线程的CPU寄存器的状态
4. 指令指针和堆栈指针寄存器是线程上下文中最重要的寄存器
5. 线程可以被抢占(中断)
6. 在其他线程正在运行时,线程可以暂时搁置(也称为睡眠)-- 这就是线程的退让

Python中使用线程有两种方式:函数或者用类来包装线程对象

python内嵌time模块介绍:
clock()
该函数有两个功能,
在第一次调用的时候,返回的是程序运行的实际时间;
以第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔

sleep(seconds)
线程推迟指定的时间运行,经过测试,单位为秒

ctime()
将一个时间戳(默认为当前时间)转换成一个时间字符串

一个最简单的实例:

import time

if __name__ == __main__:
    time.sleep(1)
    print(clock1:%s % time.ctime(time.clock()))
    time.sleep(1)
    print(clock2:%s % time.ctime(time.clock()))
    time.sleep(1)
    print(clock3:%s % time.ctime(time.clock()))

还有更多time模块的api......


线程的创建、启动、挂起和退出

# coding=utf8

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():
    # 启动5个线程
    for i in range(5):
        t = MyThread()
        t.start()

if __name__ == __main__:
    test()

 

执行结果:
I‘m Thread-1 @ 0
I‘m Thread-2 @ 0
I‘m Thread-5 @ 0
I‘m Thread-3 @ 0
I‘m Thread-4 @ 0
I‘m Thread-3 @ 1
I‘m Thread-4 @ 1
I‘m Thread-5 @ 1
I‘m Thread-1 @ 1
I‘m Thread-2 @ 1
I‘m Thread-4 @ 2
I‘m Thread-5 @ 2
I‘m Thread-2 @ 2
I‘m Thread-1 @ 2
I‘m Thread-3 @ 2

 

以上是关于python多线程的主要内容,如果未能解决你的问题,请参考以下文章

[Python3] 043 多线程 简介

python中的多线程和多进程编程

多线程 Thread 线程同步 synchronized

多个用户访问同一段代码

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

线程学习知识点总结