41 Python - python并行编程 多线程之——thread模块(已经过时,开发不推荐)

多线程并非并发编程的唯一技术手段,但是用的比较多的还是多线程。

001 单线程例子

创建文件

002 多线程例子

缺点没有控制进程结束的机制

_thread已经不推荐使用了(所以前面有有个下划线),学习阶段用于实验

(1)新建文件

函数_thread(第一个参数,第二个参数)

第一个参数,只需要写函数名,不用加括号

第二个参数,需要是元组形式

但是结果不正确,因为主线程没有等待子线程,一运行就结束了

(2)改进主线程让其等待子线程结束再结束

改进main函数,让主线程等待一下6秒等待子线程结束

改进main函数,让主线程等待一下4秒等待子线程结束

(3)改进主线程,用锁机制,此处省略代码

优化:开发人员并非所有情况都知道子线程执行的时间,所以引入锁机制,时间不用固定多长时间,而是根据锁状态是否释放来确定子线程是否结束了。

原文地址:https://www.cnblogs.com/yijiexi/p/11165567.html

时间: 2024-08-29 21:19:46

41 Python - python并行编程 多线程之——thread模块(已经过时,开发不推荐)的相关文章

python之网络编程-多线程

多线程 线程的理论知识 什么是线程 当开启一个进程的时候:内存中开辟空间,加载资源与数据,调用CPU执行,可能还会使用这个空间的资源. 定义:每个进程都有一个地址空间,而且默认就有一个控制线程.进程只是把资源集中到一起(进程可以认为是一个含有代码的空间),而线程才是CPU的执行单位. 多线程:在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间. 线程vs进程 开启多进程开销大,开启线程开销非常小 开启多进程的速度慢,开启多线程速度快 进程之间数据不能直接共享(通过队列可以),同一个进

python 小白(无编程基础,无计算机基础)的开发之路 辅助知识2 模块

一.模块和命名空间 一般来说,Python程序往往由多个模块文件构成,通过import语句连接在一起.每个模块文件是一个独立完备的变量包,即一个命名空间.一个模块文件不能看到其他文件定义的变量名,除非它显示地导入了那个文件,所以模块文件在代码文件中起到了最小化命名冲突的作用.因为每个文件都是一个独立完备的命名空间,即使在他们拼写相同的情况下,一个文件的变量名是不会与另一个文件中的变量冲突的. 注意:import VS from:应该指出,from语句在某种意义上战胜了模块的名称空间分割的目的,因

python 小白(无编程基础,无计算机基础)的开发之路 day2

本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 1 names = ['Alex',"Tenglan",'Eric'] 通过下标访问列表中的元素,下标从0开始计数 1 2 3 4 5 6 7 8 >>> names[0] 'Alex' >>> names[2] 'Eric' >>>

[python]python学习笔记(六)——界面编程

python图像用户编程1,导入模块 import Tkinter或者from Tkinter import *2,创建顶层窗口对象 top=Tkinter.Tk()3,在顶层窗口对象上创建各个功能模块 Tk有两个坐标管理器用来协助将组件放在正确的位置,Packer,另外一个管理器是网格Grid4,将GUI 模块和底层代码相连接5,进入主事件循环 Tkinter.mainloop() helloword程序:#!/usr/bin/python import Tkinter top=Tkinter

并行编程概述

并发编程 多线程之——threa模块 >>> import time >>> time.ctime() 'Thu Jan 9 07:52:57 2020' import time """单线程示例 """ def worker(n): print(f'函数执行开始于:{time.ctime()}') time.sleep(n)#休眠时间 print(f'函数执行结束于:{time.ctime()}') def

thread模块—Python多线程编程

Thread 模块 *注:在实际使用过程中不建议使用 thread 进行多线程编程,本文档只为学习(或熟悉)多线程使用. Thread 模块除了派生线程外,还提供了基本的同步数据结构,称为锁对象(lock object,也叫原语锁.互斥锁.互斥和二进制信号量). 常用线程函数以及 LockType 锁对象的方法: 函数/方法 描述 thread 模块的函数   start_new_thread(function, args, kwargs=None) 派生一个新的线程,使用给定的 args 和可

python的多线程编程 --- thread模块

1.使用thread模块(不推荐) 常用函数: 'start_new_thread(function,args,kwargs=None)':创建一个新的线程,并运行'function(args)' 'allocate_lock()': 创建锁对象 Lock object 'exit()': 提示线程退出 Lock的函数: 'acquire(wait=None)': 获取lock对象或等待wait时间 'locked()' 获得lock返回true,否则返回false 'release' :释放l

python并行编程

并行编程的思想:分而治之,有两种模型 1.MapReduce:将任务划分为可并行的多个子任务,每个子任务完成后合并得到结果 例子:统计不同形状的个数. 先通过map进行映射到多个子任务,分别统计个数,然后在用reduce进行归纳一下. 2.流水:将任务分为串行的多个子任务,每个子任务并行.ProductConsume 例子: 多个生产者进行并行,多个消费者进行并行.生产者生产出来东西放到队列里:队列里有东西时,消费者就可以进行消费,这样双方没有太大的依赖关系. 为什么要并行编程呢? 多核,云计算

python并发编程&多线程(一)

本篇理论居多,实际操作见:  python并发编程&多线程(二) 一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一个流水线 流水线的工作需要电源,电源就相当于cpu 所以,进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位. 多线程(即多个控制线程)的概念