返回顶部
首页 > 资讯 > 后端开发 > Python >python多线程学习
  • 632
分享到

python多线程学习

多线程python 2023-01-31 06:01:25 632人浏览 安东尼

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

摘要

python多线程学习:Python中的线程使用的两种方式:函数或者用类来包装线程对象。1、函数式:调用thread模块中start_new_thread()函数来产生新线程。#!/usr/bin/env python #coding:ut

python多线程学习


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


1、函数式:调用thread模块中start_new_thread()函数来产生新线程。

#!/usr/bin/env python
#coding:utf-8
'''
会出现一下的错误,在pydev中就会出现这样的错误,原因不明。一般不建议使用
thread这个模块。
Unhandled exception in thread started by 
sys.excepthook is missing
lost sys.stderr
Unhandled exception in thread started by 
sys.excepthook is missing
lost sys.stderr
'''
import thread
import time
def timer(no,interval):
    cnt = 0
    while cnt<10:
        print 'Thread :(%d) Time:%s\n'%(no,time.ctime())
        time.sleep(interval)
        cnt+=1
    thread.exit_thread()
    
def test():
    thread.start_new_thread(timer,(1,1))
    thread.start_new_thread(timer, (2,2))
    
if __name__=='__main__':
    test()


2、创建threading.Thread 的子类来包装一个线程对象。

#!/usr/bin/env python
#coding:utf-8
from threading import Thread
import time 
from _ast import Num
class timer(Thread):
    def __init__(self,num,interval):
        Thread.__init__(self)
        self.thread_num = num
        self.interval = interval
        self.thread_stop = False
        
    def run(self):
        while not self.thread_stop:
            print 'Thread Object(%d),Time:%s\n'%(self.thread_num,time.ctime())
            time.sleep(self.interval)
    
    def stop(self):
        self.thread_stop = True
def test():
    t1 = timer(1,1)
    t2 = timer(2,2)
    
    t1.start()
    t2.start()
    time.sleep(10)
    t1.stop()
    t2.stop()
    return 
if __name__=='__main__':
    test()

        

threading.Thread类的使用:

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

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

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

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

5、start(),启动线程

6、jion(),等待另一线程的结束后再运行

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

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

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


线程同步:数据共享。当多个线程都要去修改某一个共享数据的时候,我们需要对数据访问进行同步。

1、简单同步

最简单的同步机制就是‘’。锁对象由threading.RLock类创建。线程可以使用锁的acquire()方法获得锁,这样锁

就进入了“locked”状态。每次只有一个线程可以获得锁。这个线程使用完资源以后调用锁的release()方法来释放锁,使锁

进入“unlocked”状态。

python中的thread模块和Lock对象是python提供的低级线程控制工具,比较简单。

#!/usr/bin/env python
#coding:utf-8
import threading 
import time
mylock = threading.RLock()
num = 0
class myThread(threading.Thread):
    def __init__(self,name):
        threading.Thread.__init__(self)
        self.t_name = name
        
    def run(self):
        global num
        while True:
            mylock.acquire()#得到锁
            print 'Thread(%s) locked, Number: %d'%(self.t_name, num)
            if num >=5:
                mylock.release()
                print 'Thread %s release! num =%d'%(self.t_name,num)
                break
            num+=1
            print 'Thread %s released! num = %d'%(self.t_name,num)
            mylock.release()
def test():
    t1 = myThread('A')
    t2 = myThread('B')
    t1.start()
    t2.start()
    
    
if __name__== '__main__': 
    test()

2、条件同步

      使用wait()和set()fangfa 进行加锁和释放锁。

      还可以使用队列。Python中的Queue对象也提供了对线程同步的支持。使用Queue对象可以实现多个生产者和多个消费者形成的FIFO的队列。

















--结束END--

本文标题: python多线程学习

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

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

猜你喜欢
  • python多线程学习
    python多线程学习:python中的线程使用的两种方式:函数或者用类来包装线程对象。1、函数式:调用thread模块中start_new_thread()函数来产生新线程。#!/usr/bin/env python #coding:ut...
    99+
    2023-01-31
    多线程 python
  • Python多线程学习 setDae
    (2)setDaemon方法: # -*- coding: utf-8 -*- import threading import time class myThread(threading.Thread):     def __init...
    99+
    2023-01-31
    多线程 Python setDae
  • Python多线程入门学习
    Python 中使用线程有两种方式:函数或者用类来包装线程对象。 函数式: 调用 thread 模块中的start_new_thread()函数来产生新线程。 语法如下: thr...
    99+
    2024-04-02
  • Python学习记录-多进程和多线程
    [TOC] 1. 进程和线程 进程 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定独立功能的程序关于某...
    99+
    2023-01-31
    多线程 进程 Python
  • 学习java多线程
    目录介绍为什么需要多线程线程状态转换线程使用方式继承 Thread 类实现 Runnable 接口实现 Callable 接口同步代码---Runnable接口方式同步方法--Run...
    99+
    2024-04-02
  • python 线程池学习
    #!/usr/bin/pythonimport Queue, threading, sysfrom threading import Threadimport time,urllibclass Worker(Thread):   worke...
    99+
    2023-01-31
    线程 python
  • Java多线程学习笔记
    目录多任务、多线程程序、进程、线程学着看jdk文档线程的创建1.继承Thread类2.实现Runable接口理解并发的场景龟兔赛跑场景实现callable接口理解函数式接口理解线程的...
    99+
    2024-04-02
  • 深入学习C#多线程
    目录一、基本概念1、进程2、线程二、多线程2.1System.Threading.Thread类2.2 线程的常用属性2.2.1线程的标识符2.2.2线程的优先级别2.2....
    99+
    2024-04-02
  • 多线程的学习上篇
    座右铭: 天行健,君子以自强不息;地势坤,君子以厚德载物. 引入进程这个概念的目的 引入进程这个概念,最主要的目的,是为了解决“并发编程"这样的问题. 这是因为CPU进入了多核心的时代 要想进一步提...
    99+
    2023-09-21
    学习 java 服务器
  • 多线程学习初步(转)
    import java.io.*;//多线程编程public class MultiThread {public static void main(String args[]){System.out.println("我是主线程!");//...
    99+
    2023-06-03
  • Python学习—python中的线程
    1.线程定义 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。一个进程至少有一个线程,一个进程必定有一个...
    99+
    2023-01-31
    线程 Python python
  • Python学习教程(Python学习路线):Python——SciPy精讲
    Python学习教程(Python学习路线):Python——SciPy精讲SciPy 是 Python 里处理科学计算 (scientific computing) 的包,使用它遇到问题可访问它的官网 (https://www.scipy...
    99+
    2023-06-02
  • Java 多线程学习总结3
    在上一篇中,我们当然希望a++,b++执行完之后,show方法再来show.我们需要的是“原子”动作,一次性地把a++,b++不间断地执行。在java中是利用“互斥”的方法,互斥谁呢?互斥的是相同对象的加锁代码。如果我们把第一篇的SomeB...
    99+
    2023-01-31
    多线程 Java
  • Java多线程Thread基础学习
    目录1. 创建线程   1.1 通过构造函数:public Thread(Runnable target, String name){}  或:publ...
    99+
    2023-05-17
    Java多线程 Java 多线程Thread
  • Python 爬虫学习笔记之多线程爬虫
    XPath 的安装以及使用 1 . XPath 的介绍 刚学过正则表达式,用的正顺手,现在就把正则表达式替换掉,使用 XPath,有人表示这太坑爹了,早知道刚上来就学习 XPath 多省事 啊。其实我个人认...
    99+
    2022-06-04
    爬虫 之多 线程
  • python基础学习20----线程
    什么是线程   线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派...
    99+
    2023-01-30
    线程 基础 python
  • Python学习笔记之线程
    目录1.自定义进程2.进程与线程3.多线程4.Thread类方法5.多线程与多进程小Case6.Thread 的生命周期7.自定义线程8.线程共享数据与GIL(全局解释器锁)9.GI...
    99+
    2024-04-02
  • Java学习随记之多线程编程
    Process和Thread 程序是指令和数据的有序集合, 本身没有运行的含义,是一个静态的概念。 进程是执行程序的一次执行过程,他是一个动态的概念,是系统资源分配的单位 一个进程中...
    99+
    2024-04-02
  • Android多线程学习实例详解
    本文实例分析了Android多线程。分享给大家供大家参考,具体如下: 在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函数,一般都是一个带有循环的函数,来...
    99+
    2022-06-06
    学习 android多线程 线程 Android
  • Python学习路线
    注意:此文是转载根据本人的学习经验,我总结了以下十点和大家分享:1)学好python的第一步,就是马上到www.python.org网站上下载一个python版本。我建议初学者,不要下载具有IDE功能的集成开发环境,比如Eclipse插件等...
    99+
    2023-01-31
    路线 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作