Python多线程

Posted

tags:

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

进程(process)

  进程是程序在内存中的一个实例(进程是程序的一次执行活动,是动态的)

多道编程的实现就是把多个程序的实例同时在内存中打开,给外部一种并发的假象

 

进程的缺陷:

1,进程在同一时刻只能做一件事情,如果想同时干两件事,进程是无能为力的。

2,进程在执行任务时,如果阻塞(例如等待I/O),那么整个程序就会被挂起

 

线程(thread)

  线程是操作系统可以进行运算调度的最小单位,它被包含在进程中,是进程中的实际运作单位,一条线程指的是进程中一个单一顺序的控制了,

一个进程可以并发多个线程,每个线程执行不同的任务。

 

进程与线程的区别:

1,线程之间共享内存地址(有进程创建)

2,线程之间可以直接通信,进程之间不能

3,创建一个线程非常快速简单,创建一个进程需要拷贝完整的程序数据

4,线程可以控制同一进程中的其他线程,进程只能控制子进程

 

Python实现多线程的模块:

threading

 

简单的多线程并发程序

1,直接调用  

#!/usr/bin/env python3
#-*- coding:utf-8 -*-

import threading,time

def foo(num):
    print("running on number {}.".format(num))
    time.sleep(5)

if __name__ == __main__:
    t1 = threading.Thread(target=foo,args=(1,))
    t2 = threading.Thread(target=foo,args=(1,))
    t1.start()
    t2.start()
    print(t1.getName())
    print(t2.getName())

2,继承式

#!/usr/bin/env python3
#-*- coding:utf-8 -*-

import threading,time


class Mythread(threading.Thread):
    def __init__(self,num):
        threading.Thread.__init__(self)
        self.num = num

    def run(self):
        print ("Running at number %s." % self.num)
        time.sleep(5)

t1 = Mythread(1)
t2 = Mythread(2)
t1.start()
t2.start()

 

 

不管通过何种形式来实现多线程,这些程序在运行的时候线程都是并发的。

 

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

[Python3] 043 多线程 简介

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

多线程 Thread 线程同步 synchronized

多个用户访问同一段代码

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

线程学习知识点总结