广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 多线程简单实现
  • 712
分享到

python 多线程简单实现

多线程简单python 2023-01-31 01:01:36 712人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

1. 线程是什么?线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。2 为什么要用线程?a 单个线程可以在进程中独立运行c 并行操作,适用于C/S架构3 python怎么生成线程(将函数生

1. 线程是什么?

线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。

2 为什么要用线程?

a 单个线程可以在进程中独立运行

c 并行操作,适用于C/S架构

3 python怎么生成线程(将函数生成线程):

# -*- coding: UTF-8 -*-
import threading   #加载线程模块
import time

#演示用函数run
def run(num):  
  print "Hi,I am thread %s.....lalala"  %num
  time.sleep(3)
  
for i in range(30):
  t = threading.Thread(target=run,args=(i,))
  #使用threading模块Thread方法生成一个线程
  #target=你要运行的函数,args=你运行的函数的参数,后面的","是不能省略的
  t.start()
  #调用start方法,执行run()方法,也就是定义的函数

总结:

    生成线程就2个步骤:

     1.加载threading模块

     2.使用threading.Thread方法实例化一个对象就行


python怎么生成线程(将类生成线程):

# -*- coding: UTF-8 -*-
import threading
import time
#将自定义的类,继承threading.Thread方法
class MyThread(threading.Thread):
  #构建初始化类的方法
  def __init__(self,num):
    #继承threading.Thread的初始化类的方法
    threading.Thread.__init__(self)
    self.num = num
  #此处定义的方法名,必须是run方法
  def run(self):
    print "Hi,I am thread %s.....lalala"  %self.num
    time.sleep(3)
  
for i in range(30):
  t = MyThread(i)
  #继承threading.Thread方法后,实例化自定义类后,会自动执行run方法
  t.start()

总结:

    通过自定义类,继承threading.Thread类,要通过一定的规则来生成线程:

    1.自定义类继承threading.Thread类

    2.继承threading.Thread的__init__初始化类的方法

    3.构建run方法

    4.实例化自定义类,就会将自定义类中run方法给自动执行成一个线程


5 线程

  如果线程执行的函数内有变量共用一个全局变量,那么并发线程在执行中,会导致这个变量数值出现变化,从而导致结果错误(而线程需要执行的函数内的变量,定义为全局变量本省就不正常)


#!/usr/bin/env python
import threading
import time
number = 0
lock = threading.RLock()
#实例化线程锁Rlock类
def run(num):
  lock.acquire()
  #调用acquire方法为线程加所
  #number = 0
  print "Hi,I am thread %s.....lalala"  %num
  global number
  number +=1
  print "this is thread " ,num,number
  lock.release()
  #调用release方法为线程解锁
  
  time.sleep(3)
  
  
for i in range(30):
  t = threading.Thread(target=run,args=(i,))
  t.start()

补充:

threading.Thread类的使用:

1,在自己的线程类的__init__里调用threading.Thread.__init__(self, name = threadname)

Threadname为线程的名字

2, run(),通常需要重写,编写代码实现做需要的功能。

3,getName(),获得线程对象名称

4,setName(),设置线程对象名称

5,start(),启动线程

6,join([timeout]),等待另一线程结束后再运行。

     在循环内,join()的作用是,在子线程完成运行之前,这个子线程的父线程将一直被阻塞。

  注意:  join()方法的位置是在for循环外的,也就是说必须等待for循环里的两个进程都结束后,才去执行主进程。



7,setDaemon(bool),设置子线程是否随主线程一起结束,必须在start()之前调用。默认为False。

8,isDaemon(),判断线程是否随主线程一起结束。

9,isAlive(),检查线程是否在运行中。


--结束END--

本文标题: python 多线程简单实现

本文链接: https://www.lsjlt.com/news/184353.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 多线程简单实现
    1. 线程是什么?线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。2 为什么要用线程?a 单个线程可以在进程中独立运行c 并行操作,适用于C/S架构3 python怎么生成线程(将函数生...
    99+
    2023-01-31
    多线程 简单 python
  • Python实现简单多线程任务队列
    最近我在用梯度下降算法绘制神经网络的数据时,遇到了一些算法性能的问题。梯度下降算法的代码如下(伪代码): def gradient_descent(): # the gradient descent...
    99+
    2022-06-04
    队列 多线程 简单
  • python 简单的多线程链接实现代码
    服务端: #!/usr/bin/env import SocketServer class myMonitorHandler(SocketServer.BaseRequestHandler): def...
    99+
    2022-06-04
    多线程 代码 简单
  • 简单的python多线程并发
    前些天学到的线程,做下记录,以备后用: 程序如下: import sys,time import thread def a():        for i in range(1,5):      ...
    99+
    2023-01-31
    多线程 简单 python
  • Python中的多线程实例(简单易懂)
    目录1.python中显示当前线程信息的属性和方法2.添加一个线程3.线程中的join函数4.使用Queue存储线程的结果5.线程锁lock前言: 多线程简单理解就是:一个CPU,也...
    99+
    2022-11-11
  • Python多线程爬虫简单示例
    python是支持多线程的,主要是通过thread和threading这两个模块来实现的。thread模块是比较底层的模块,threading模块是对thread做了一些包装的,可以更加方便的使用。 虽然...
    99+
    2022-06-04
    爬虫 示例 多线程
  • C#实现多线程编程的简单案例
    目录一、使用线程的理由二、基本知识三、线程的使用四、线程池五、Task类六、委托异步执行一、使用线程的理由 1、可以使用线程将代码同其他代码隔离,提高应用程序的可靠性。2、可以使用线...
    99+
    2022-11-13
  • Qt5.9实现简单的多线程实例(类QThread)
    Qt开启多线程,主要用到类QThread。有两种方法,第一种用一个类继承QThread,然后重新改写虚函数run()。当要开启新线程时,只需要实例该类,然后调用函数start(),就...
    99+
    2022-11-12
  • Python 简单的多线程执行命令
    Tools.py#!/usr/bin/python #coding:utf-8 import threading import subprocess import os import sys sshport = 13131 log_path...
    99+
    2023-01-31
    多线程 命令 简单
  • C++Thread实现简单的socket多线程通信
    目录起因服务端ROS客户端普通客户端运行效果不足起因 为什么要用C++的Thread,很简单,因为我菜 一打五用pthread实现了socket多线程通信,我之前学并发的时候没看pt...
    99+
    2022-11-13
  • 用Python实现一个简单的线程池
    线程池的概念是什么?在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是 如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能...
    99+
    2023-01-31
    线程 简单 Python
  • python 简单搭建阻塞式单进程,多进程,多线程服务的实例
    我们可以通过这样子的方式去理解apache的工作原理 1 单进程TCP服务(堵塞式) 这是最原始的服务,也就是说只能处理个客户端的连接,等当前客户端关闭后,才能处理下个客户端,是属于阻塞式等待 fro...
    99+
    2022-06-04
    进程 多线程 实例
  • Java简单实现线程池
    本文实例为大家分享了Java简单实现线程池的具体代码,供大家参考,具体内容如下 一、线程池 线程池是一种缓冲提高效率的技术。 相当于一个池子,里面存放大量已经创建好的线程,当有一个任...
    99+
    2022-11-12
  • Python多进程同步简单实现代码
    本文讲述了Python多进程同步简单实现代码。分享给大家供大家参考,具体如下: #encoding=utf8 from multiprocessing import Process, Lock def ...
    99+
    2022-06-04
    进程 代码 简单
  • 实现java简单的线程池
    目录拆分实现流程实现方式1.拒绝策略2.阻塞队列3.线程池和工作线程策略模式对比JDK的线程池线程池的状态转化总结拆分实现流程 请看下面这张图 首先我们得对线程池进行一个功能拆分 ...
    99+
    2022-11-12
  • Linux中多线程详解及简单实例
    Linux中多线程详解及简单实例 1.概念 进程:运行中的程序。 线程:一个程序中的多个执行路径。更准确的定义是:线程是一个进程内部的一个控制序列。 2.为什么要有线程? 用fork调用进程...
    99+
    2022-06-04
    多线程 详解 实例
  • Java编程之多线程死锁与线程间通信简单实现代码
    死锁定义 死锁是指两个或者多个线程被永久阻塞的一种局面,产生的前提是要有两个或两个以上的线程,并且来操作两个或者多个以上的共同资源;我的理解是用两个线程来举例,现有线程A和B同时操作两个共同资源a和b,A操作a的时候上锁LockA,继续执行...
    99+
    2023-05-30
    java 多线程 ava
  • Linux C线程池简单实现实例
    Linux C线程池 三个文件 1 tpool.h typedef struct tpool_work { void (*routine)(void *); void ...
    99+
    2022-06-04
    线程 实例 简单
  • Python中的多线程(史上最简单易懂版)
    简介: 多线程简单理解就是:一个CPU,也就是单核,将时间切成一片一片的,CPU轮转着去处理一件一件的事情,到了规定的时间片就处理下一件事情。 主要内容: 1.python中显示当前线程信息的属性和方...
    99+
    2023-10-09
    python
  • Python+matplotlib实现简单曲线的绘制
    目录一、安装matplotlib二、测试 matplotlib三、 绘制简单的折线四、使用 scatter() 绘制散点图并设置其样式1、要绘制单个点2、要绘制系列点3、自...
    99+
    2022-11-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作