threading示例

多线程举例:

import time
import threading
def worker():
    print ("hello.Kamil")
    time.sleep(1)#等待一秒
    return
time_start=time.time()
if __name__ == "__main__":
    for i in range(5):
        worker()#(执行五次)
time_end = time.time()
print(time_end-time_start)
for n in range(5):
    t = threading.Thread(target=worker)
    t.start()
time_end2 = time.time()

执行结果:

[email protected]:~/PycharmProjects/ftp0310/0310shangke/try$ python3.4 d.py
hello.Kamil
hello.Kamil
hello.Kamil
hello.Kamil
hello.Kamil
5.006033897399902
hello.Kamil
hello.Kamil
hello.Kamil
hello.Kamil
hello.Kamil
0.0030531883239746094
[email protected]-kamil:~/PycharmProjects/ftp0310/0310shangke/try$ 

第二次虽然也是循环5次,但是启用多线程来完成的,所以速度提升非常明显;

示例2:

import threading
import time
class timer(threading.Thread):
    def __init__(self, num, interval):
        threading.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(%s), Time:%s\n‘ %(self.thread_num, time.ctime())  )
            time.sleep(self.interval)
    def stop(self):
        self.thread_stop = True
def test():
    thread1 = timer(‘thread1‘,2)
    thread2 = timer(‘thread2‘,3)
    thread1.start()
    thread2.start()
    time.sleep(7)
    thread1.stop()
    thread2.stop()
    return

if __name__ == ‘__main__‘:
    test()

同时启动两个线程,thread1 与 thread2 ,其中1 是间隔2s 执行打印一次,2是间隔3s执行打印一次;在运行开始后,会在第六秒再次同时运行;结果如下:

[email protected]:~/PycharmProjects/ftp0310/0310shangke/try$ python3.4 c.py
Thread Object(thread1), Time:Thu Mar 17 09:27:26 2016                      1   26

Thread Object(thread2), Time:Thu Mar 17 09:27:26 2016                      2   26

Thread Object(thread1), Time:Thu Mar 17 09:27:28 2016             1   28

Thread Object(thread2), Time:Thu Mar 17 09:27:29 2016                      2   29

Thread Object(thread1), Time:Thu Mar 17 09:27:30 2016                      1   30

Thread Object(thread2), Time:Thu Mar 17 09:27:32 2016                      2   32

Thread Object(thread1), Time:Thu Mar 17 09:27:32 2016                      1   32

[email protected]-kamil:~/PycharmProjects/ftp0310/0310shangke/try$ 
时间: 2024-10-04 00:16:38

threading示例的相关文章

QT Demo 之 threading(2) Spinner

在QT Demo 之 threading一章中我们使用到了Spinner,但是由于Spinner本身和thread部分关系不大,而是作为一个独立的自定义组件,因此我们在这一章中单独讲解. Spinner定义在threading/workerscript/Spinner.qml文件中,由一个Text和Rectangle组成: Rectangle { width: 64 height: 64 property alias value: list.currentIndex property alias

Rosyln入门(二)-C#语义分析

先决条件 Visual Studio 2017 .NET Compiler Platform SDK Rosyln入门(一)-C#语法分析 简介 今天,Visual Basic和C#编译器是黑盒子:输入文本然后输出字节,编译管道的中间阶段没有透明性.使用.NET编译器平台(以前称为“Roslyn”),工具和开发人员可以利用编译器使用的完全相同的数据结构和算法来分析和理解代码. 本篇文章,我们将探索Symbol和BindingAPI.通过语法API来查看解析器,语法树,用于推理和构造它们的实用程序

Python threading多线程编程示例

Python 的多线程有两种实现方法: 函数,线程类 1.函数 调用 thread 模块中的 start_new_thread() 函数来创建线程,以线程函数的形式告诉线程该做什么 # -*- coding: utf-8 -*- import thread def f(name): #定义线程函数 print "this is " + name if __name__ == '__main__': thread.start_new_thread(f, ("thread1&qu

第3章(第20讲) 示例20—全景图完整示例

分类:C#.Android.百度地图应用: 日期:2016-02-04 一.简介 1.展示全景图的方式 有以下展示全景图的办法: (1)利用地理坐标展示全景图. (2)利用全景图ID展示全景图. (3)利用墨卡托坐标展示全景图. (4)利用地图POI ID展示全景图. 通过以上方式,就可以使用百度提供的全景图展示服务了. 2.坐标转换 为了更方便的获取全景图,SDK还提供了坐标转化工具,利用CoordinateConverter 工具中的方法可以很方便进行坐标转换. 3.全景图控制 用户可以利用

.NET Core R2安装及示例教程

.NET Core R2安装及示例教程 前言 前几天.NET Core发布了.NET Core 1.0.1 R2 预览版,之前想着有时间尝试下.NET Core.由于各种原因,就没有初试.刚好,前几天看到.NET Core发布新版本了,决定要去一探究竟.于是乎,就立马去官网查找相关的信息,为初探做准备. 下面就开始今天的内容,有两个部分:安装和创建示例程序. 安装 本人使用的是Windows 10 64位系统,安装过Visual Studio 2015,如果没有安装,请先安装. 下载安装文件 进

【[email protected]】锁示例

当出现竞态条件时候,即在同一个时刻只有一个线程可以进入临界区,需要使用同步. 常见的同步原语有两种:锁/互斥,信号量. 锁是最简单,最低级的机制. 首先看一个不使用锁时候的多线程示例: from atexit import register from time import sleep, ctime from threading import currentThread, Thread from random import randrange class cleanOutput(list): d

python中的进程、线程(threading、multiprocessing、Queue、subprocess)

Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. 程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等. 每次执行程序的时候,都会完成一定的功能,比如说浏览器帮我们打开网页,为了保证其独立性,就需要一个专

ICSharpCode.SharpZipLib 开源压缩库使用示例

官方网站:http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx 插件描述: ICSharpCode.SharpZipLib.dll 是一个完全由c#编写的Zip, GZip, Tar and BZip2 library,可以方便地支持这几种格式的压缩解压缩, SharpZipLib 的许可是经过修改的GPL,底线是允许用在不开源商业软件中,意思就是免费使用. 一.在ThinksKing的Plugins里面找到已经解压好的Sh

WinForm LED循环显示信息,使用定时器Threading.Timer

原文:WinForm LED循环显示信息,使用定时器Threading.Timer 这里用一个示例来演示timer如何使用.示例:LED屏幕显示描述:这个示例其实很简单,LED屏幕上显示3个信息:        1:排队叫号         2:催缴费         3:等待列表.因为LED屏幕大小的关系,列表需要分页显示. 正常情况下,这3个信息都需要从服务器上去获得,这里的示例只做简单的模拟, 界面很简单,如图,这里我就不美化了. Timer构造函数参数说明: Callback:一个 Ti