浅谈一下python中threading模块

目录
  • 一、Thread的使用
  • 二、threading.activeCount()的使用
  • 三、threading.enumerate()的使用。
  • 四、threading.setDaemon()的使用。

python中threading模块详解,threading提供了一个比thread模块更高层的API来提供线程的并发性。这些线程并发运行并共享内存。

下面来看threading模块的具体用法:

一、Thread的使用

目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行。

这里对使用多线程并发,和不适用多线程并发做了一个比较:

首先是不使用多线程的操作:

代码如下:

#!/usr/bin/python
#compare for multi threads
import time
def worker():
    print"worker"
    time.sleep(1)
    return
    if__name__ =="__main__":
    for i in xrange(5):
    worker()

执行结果如下:

下面是使用多线程并发的操作:

代码如下:

#!/usr/bin/python
import threading
import time
defworker():
    print"worker"
    time.sleep(1)
    return
    fori in xrange(5):
        t=threading.Thread(target=worker)
        t.start()

可以明显看出使用了多线程并发的操作,花费时间要短的很多。

二、threading.activeCount()的使用

此方法返回当前进程中线程的个数。返回的个数中包含主线程。

代码如下:

#!/usr/bin/python
#current's number of threads
import threading
import time
defworker():
    print"test"
    time.sleep(1)
    for i in xrange(5):
        t=threading.Thread(target=worker)
        t.start()
        print"current has %d threads" % (threading.activeCount() -1)

三、threading.enumerate()的使用。

此方法返回当前运行中的Thread对象列表。

代码如下:

#!/usr/bin/python
#test the variable threading.enumerate()
import threading
import time
defworker():
    print"test"
    time.sleep(2)
    threads=[]
    for i in xrange(5):
        t=threading.Thread(target=worker)
        threads.append(t)
        t.start()
        for item in threading.enumerate():
            print item
            print for item in threads:
                print item

四、threading.setDaemon()的使用。

设置后台进程。

代码如下:

#!/usr/bin/python
#create a daemon
import threading
import time
def worker():
    time.sleep(3)
    print"worker"
    t=threading.Thread(target=worker)
    t.setDaemon(True)
    t.start()
    print"haha"

可以看出worker()方法中的打印操作并没有显示出来,说明已经成为后台进程。

到此这篇关于浅谈一下python中threading模块的文章就介绍到这了,更多相关python的threading模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python threading模块的使用指南

    1. threding模块创建线程对象 接上述案例,我们可以利用程序阻塞的时间让程序执行后面的任务,可以用多线程的方式去实现.对应的需要我们借助threading模块去实现: 如下所示 import time import threading def work(): """只有函数对象才能佈田名线积""" print('5.洗茶杯: 1min ' ) time.sleep(1) print('6.放茶叶: 1min ' ) time.sleep(

  • Python+threading模块对单个接口进行并发测试

    本文实例为大家分享了Python threading模块对单个接口进行并发测试的具体代码,供大家参考,具体内容如下 本文知识点 通过在threading.Thread继承类中重写run()方法实现定制输出结果 代码如下 import requests import threading import sys, io # 解决console显示乱码的编码问题 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') clas

  • Python threading和Thread模块及线程的实现

    目录 前言 1. 线程 1.1 线程模块 1.1.1 Thread类 1.2 创建线程 1.2.1 实例Thread类法创建线程 1.2.1 继承重写Thread类法创建线程 1.3 Join & setDaemon 1.3.1 join 1.3.2 setDaemon 前言 进程: 打开一个程序至少会有一个进程  它是cpu调度的最小的单位. 线程: 程序执行的最小单位,一个进程里面至少有一个线程,cpu会控制进程里面的线程. 打个比方: (1)打开一个qq就是一个进程的话,那么你可以同时和好

  • Python多线程编程之threading模块详解

    一.介绍 线程是什么?线程有啥用?线程和进程的区别是什么? 线程是操作系统能够进行运算调度的最小单位.被包含在进程中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. 二.Python如何创建线程 2.1 方法一: 创建Thread对象 步骤: 1.目标函数 2.实例化Thread对象 3.调用start()方法 import threading # 目标函数1 def fun1(num): for i in range(

  • Python常用模块之threading和Thread模块

    目录 1. 线程通信 1.1 互斥锁 1.2 线程间全局变量的共享 1.3 共享内存间存在竞争问题 1.4 使用锁来控制共享资源的访问 分析此阶段,我们会发现进程和线程的痛点!!! 2. 队列的基本概念 总结 1. 线程通信 1.1 互斥锁 在多线程中 , 所有变量对于所有线程都是共享的 , 因此 , 线程之间共享数据最大的危险在于多个线程同时修改一个变量 , 那就乱套了 , 所以我们需要互斥锁 , 来锁住数据. 1.2 线程间全局变量的共享 注意: 因为线程属于同一个进程,因此它们之间共享内存

  • 浅谈一下python中threading模块

    目录 一.Thread的使用 二.threading.activeCount()的使用 三.threading.enumerate()的使用. 四.threading.setDaemon()的使用. python中threading模块详解,threading提供了一个比thread模块更高层的API来提供线程的并发性.这些线程并发运行并共享内存. 下面来看threading模块的具体用法: 一.Thread的使用 目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以

  • Python中threading模块join函数用法实例分析

    本文实例讲述了Python中threading模块join函数用法.分享给大家供大家参考.具体分析如下: join的作用是众所周知的,阻塞进程直到线程执行完毕.通用的做法是我们启动一批线程,最后join这些线程结束,例如: for i in range(10): t = ThreadTest(i) thread_arr.append(t) for i in range(10): thread_arr[i].start() for i in range(10): thread_arr[i].joi

  • 浅谈对python中if、elif、else的误解

    今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..."是"if...elif...else..."的简化结构(这个错误的看法好像还是从学C语言继承过来的).学了这么多天才发现其中的区别啊.下面先说说python,然后再说一下C语言里面的if语句. "python中通过if.elif.else等保留字提供单分支.二分支和多分支结构.&

  • 浅谈一下Python中5种下划线的含义

    目录 1.单前导下划线:_var 2.单末尾下划线 var_ 3. 双前导下划线 __var 4.双前导和双末尾下划线 _var_ 5.单下划线 _ 1.单前导下划线:_var 当涉及到变量和方法名称时,单个下划线前缀有一个约定俗成的含义. 它是对程序员的一个提示 - 意味着Python社区一致认为它应该是什么意思,但程序的行为不受影响. 下划线前缀的含义是告知其他程序员:以单个下划线开头的变量或方法仅供内部使用. 该约定在PEP 8中有定义. 这不是Python强制规定的. Python不像J

  • 举例详解Python中threading模块的几个常用方法

    threading.Thread Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法:另一种是创建一个threading.Thread对象,在它的初始化函数(__init__)中将可调用对象作为参数传入.下面分别举例说明.先来看看通过继承threading.Thread类来创建线程的例子: #coding=gbk import threading, time, random count = 0 cl

  • Python中Threading用法详解

    Python的threading模块松散地基于Java的threading模块.但现在线程没有优先级,没有线程组,不能被销毁.停止.暂停.开始和打断. Java Thread类的静态方法,被移植成了模块方法. main thread: 运行python程序的线程 daemon thread 守护线程,如果守护线程之外的线程都结束了.守护线程也会结束,并强行终止整个程序.不要在守护进程中进行资源相关操作.会导致资源不能正确的释放.在非守护进程中使用Event. Thread 类 (group=No

  • 浅谈python中requests模块导入的问题

    今天使用Pycharm来抓取网页图片时候,要导入requests模块,但是在pycharm中import requests 时候报错. 原因: python中还没有安装requests库 解决办法: 1.先找到自己python安装目录下的pip 2.在自己的电脑里打开cmd窗口. 先点击开始栏,在搜索栏输入cmd,按Enter,打打开cmd窗口.在cmd里将目录切换到你的pip所在路径. 比如我的在C:\Python27\Scripts这个目录下,先切换到d盘,再进入这个路径. 具体命令:cd.

  • 浅谈Python中os模块及shutil模块的常规操作

    如下所示: #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序. 它不包括 '.' 和'..' 即使它在文件夹中. #只支持在 Unix, Windows 下使用 import os, sys # 打开文件 path=r'C:\Users\Administrator.SKY-20180518VHY\Desktop\rx\ore' dirs = os.listdir( path ) print(dirs) # 输出所有文件和文件夹 for fil

  • 浅谈Python中threading join和setDaemon用法及区别说明

    Python多线程编程时,经常会用到join()和setDaemon()方法,今天特地研究了一下两者的区别. 1.join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用线程的join方法. 原型:join([timeout]) 里面的参数时可选的,代表线程运行的最大时间,即如果超过这个时间,不管这个此线程有没有执行完毕都会被回收,然后主线程或函数都会接

  • 浅谈Python中的模块

    模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Module). 使用模块有什么好处? 当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块. 模块还可以避免函数名和变量名冲突.相同名字的函数和变量完全可以分别存在不同的模块中.但是也要注意,尽量不要与内置函数名字冲突. 如果不

随机推荐