Python线程的用法 函数式线程_thread和threading 样例

函数式线程写起来比较简单,但是功能没有threading那么高级,先来个函数式编程样例:

#!/usr/bin/python
#coding: utf-8

#————————————————————————函数式线程————————————————————————————————————————
#QQ496631085  小和   XiaoHe
import _thread
import time

def     print_time(threadName,delay):
    count = 0
    while count<4:
        time.sleep(delay)
        count += 1
        print(threadName,time.ctime())

print(time.ctime())#打印现在时间以方便对比
_thread.start_new_thread(print_time,("thread-1",2))
_thread.start_new_thread(print_time,("thread-2",4))
time.sleep(200)#不加这个有的编译器,直接到最后就停止整个程序运行了,看不出效果
print("end")

#————————————————————————函数式线程————————————————————————————————————————

然后就是threading线程样例:

#!/usr/bin/python
#coding: utf-8

#===========================threading========================================

#QQ496631085  XiaoHe
import threading
import time

class myThread(threading.Thread):
    """docstring for myThread"""
    def __init__(self, name,delay):
        threading.Thread.__init__(self)
        print(name+"线程开始时间" +time.ctime())

        self.name =name
        self.delay = delay

    def run(self):
        print("Starting " + self.name + time.ctime())
        print_time(self.name, self.delay)
        print("Exiting " + self.name + time.ctime())

def print_time(threadName, delay):
    counter = 0
    while counter < 3:
        time.sleep(delay)
        print("延时" + threadName  ,time.ctime())
        counter+=1

threads =[]
#创建新线程
thread1= myThread("Thread-111",2)
thread2= myThread("Thread-222",4)

#开始新线程
thread1.start()
thread2.start()

#添加线程到线程列表   然后一直等待线程终止
threads.append(thread1)
threads.append(thread2)

#等待线程结束
for t in threads:
    t.join()
print("线程结束")
#===========================threading========================================

如果觉得这个还慢有不足的地方,可以试试queue的多线程爬虫

原文地址:https://www.cnblogs.com/xiaohe520/p/10767361.html

时间: 2024-12-19 05:58:26

Python线程的用法 函数式线程_thread和threading 样例的相关文章

好记性不如烂笔头75-多线程-并行访问下的资源竞争和样例

在实际业务常见中,很多的时候我们都需要访问一些共同的资源,比如一个序列号,比如某一个文件.如果多个线程一起访问这个序列或者文件,而我们没有做足够多的处理,就很容易造成脏数据或者数据丢失等各种问题. 这种场景特别常见,写一个简单的例子.以免自己的团队在实际开发中,犯这种小错误. 当然,这种错误知道了,要预先处理还是相当简单:但是如果要真的出现了错误,在一大堆代码中找这个坑,那是相当的要命. 样例的场景 我们的业务需要获取一个序列号.下面是一个取得序列号的单例模式的例子,但调用get()时,可能会产

Python Web框架Tornado的异步处理代码演示样例

1. What is Tornado Tornado是一个轻量级但高性能的Python web框架,与还有一个流行的Python web框架Django相比.tornado不提供操作数据库的ORM接口及严格的MVC开发模式,但能够提供主要的web server功能.故它是轻量级的:它借助non-blocking and event-driven的I/O模型(epoll或kqueue)实现了一套异步网络库,故它是高性能的. Tornado的轻量级+高性能特性使得它特别适用于提供web api的场合

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

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

Python菜鸟学习手册15----多线程

线程与进程 程序相当于工厂,进程相当于车间,线程相当于工人.在一个工厂中往往有多个车间,在一个车间上有多个工人并行工作. 同车间上的工人共享房间,但是有些房间一次只能容纳一个人,比如厕所.在厕所里有人的时候,其他人不能进入.一个防止他人进入的简单方法,就是门口加一把锁.先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去.这就叫"互斥锁"(Mutual exclusion,缩写 Mutex). 还有些房间,可以同时容纳n个人,如果人数大于n,多出来的人只能在外面等着.这时的解

Python:线程、进程与协程(2)——threading模块(1)

上一篇博文介绍了Python中线程.进程与协程的基本概念,通过这几天的学习总结,下面来讲讲Python的threading模块.首先来看看threading模块有哪些方法和类吧. 主要有: Thread :线程类,这是用的最多的一个类,可以指定线程函数执行或者继承自它都可以实现子线程功能. Timer:与Thread类似,但要等待一段时间后才开始运行,是Thread的子类. Lock :原锁,是一个同步原语,当它锁住时不归某个特定的线程所有,这个可以对全局变量互斥时使用. RLock :可重入锁

python之--并发编程__线程

操作系统线程理论 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本:进程是程序的一次执行活动,属于动态概念.在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行.这是这样的设计,大大提高了CPU的利用率.进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多

Python 中的进程、线程、协程、同步、异步、回调

进程和线程究竟是什么东西?传统网络服务模型是如何工作的?协程和线程的关系和区别有哪些?IO过程在什么时间发生? 在刚刚结束的 PyCon2014 上海站,来自七牛云存储的 Python 高级工程师许智翔带来了关于 Python 的分享<Python中的进程.线程.协程.同步.异步.回调>. 一.上下文切换技术 简述 在进一步之前,让我们先回顾一下各种上下文切换技术. 不过首先说明一点术语.当我们说"上下文"的时候,指的是程序在执行中的一个状态.通常我们会用调用栈来表示这个状

python开发之路之线程、进程、协程

一.多进程和多线程 共同点: 让多个CPU同时处理请求 区别: 1.多线程中的线程在内存空间这一点上是共享的,进程与进程使用的是不同的内存空间.即创建线程不需要开辟内存空间,而创建新的进程需要为其分配新的内存空间 全局解释器锁(GIL) 在每一个进程的“出口”,是python特有的.它的作用是:做到了1个限制,什么限制呢,如果有2个线程同时被调度了,此时全局解释器锁就限制同时只能有1个穿过全局解释器锁,才能被CPU调度 那什么时候该使用多进程,什么时候该使用多线程呢? I/O密集型用多线程 计算

Python多线程(2)——线程同步机制

本文介绍Python中的线程同步对象,主要涉及 thread 和 threading 模块. threading 模块提供的线程同步原语包括:Lock.RLock.Condition.Event.Semaphore等对象. 1. Lock 1.1 Lock对象的创建 Lock是Python中最底层的同步机制,直接由底层模块 thread 实现,每个lock对象只有两种状态——上锁和未上锁,不同于下文的RLock对象,Lock对象是不可重入的,也没有所属的线程这个概念. 可以通过下面两种方式创建一