下面面这个代码中使用多线程运行线程函数。
使用input函数从终端采集一个字符串,采集字符串的目的是让程序暂停。
目的是在所有的线程执行完之前阻止程序退出。
因为程序无法感知是否有线程正在执行,
是否所有的线程函数都执行完毕,所以采取这种手段让程序暂停不退出。

如果了解了锁的概念,就会觉得这种做法Low。

【锁】不是将程序锁住不退出,
而是让程序知道还有没有线程函数没执行完的。
直到所有的线程函数执行完后,
程序自动立刻退出。

当没有【锁】,创建的线程并不是按照顺序执行的,而是随机执行的(那个快就执行那个)
所以下面设定的print()函数提前执行

from time import sleep,ctime
import _thread as thread
import randomdef fun(a,b):c=random.randint(1,3)#随机的休眠时间print("休眠时间为",c)#输出时因为 执行计算超短,会先输出休眠时间sleep(c)#进行休眠print("No.",a,"线程",b)print("开始时间:",ctime())for i in range(8):#当读取到本行代码时,会自动执行thread.start_new_thread(fun,(i+1,"k"*(i+1)))#第一个参数为线程函数#第二个参数为传递的元组数据参数print("结束时间:",ctime())input("已经结束请输入随意字符,再按回车")

如你测试时后并没有进行休眠,请多保存一次
代码2

def fun(a):b = random.randint(1,3)sleep(b)print("No.",a,"个线程-","休眠时间为:",b)print("开始时间:",ctime())for i in range(3):thread.start_new_thread(fun,(i+1,))print("结束时间",ctime())input("已经结束请输入随意字符,再按回车")

代码3

def fun(a):b = random.randint(1,3)sleep(b)print("No.",a,"个线程-","休眠时间为:",b)print("开始时间:",ctime())def main():for i in range(3):thread.start_new_thread(fun,(i+1,))if __name__=="__main__":main()print("结束时间",ctime())
input("已经结束请输入随意字符,再按回车")

python多线程 _thread没有上lock时程序提前给你把可执行的都执行,不按代码编写顺序执行相关推荐

  1. python爬取csdn上的包含整人关键词的阅读量并且存入表格里。完整代码

    请注意,爬取他人网站的数据可能违反网站的条款和条件.在进行爬虫操作之前,请确保获得网站的授权. 下面是一个使用 Python 爬取 CSDN 上所有包含 "整人" 关键词文章的阅读 ...

  2. Python多线程学习(上)

    最近在学习python多线程,写一下随笔就当复习了.另外强烈推荐大家看一下<Python核心编程>这本书,这本书里面可以帮你学习python进阶. 一.基本概念: 1.线程: 线程又称为轻 ...

  3. python将EXCEL数据导入数据库时日期型数据变成数字并加.0的问题一行代码解决方案方案

    [问题描述]:python将EXCEL数据导入数据库时日期变成文本型数据并显示为数字格式 [解决方案] 数据源: codes: #!/usr/bin/python3 -- coding: utf-8 ...

  4. python stdout用法_使用Python子进程从stdout上的C程序捕获输出...

    你不能像那样使用p.stdout;如果您要求"整个标准输出",则只有在过程终止(或管道缓冲器填充,这可能需要很长时间)时才可用. 您需要逐行读取进程的stdout. while T ...

  5. python多线程_thread使用锁

    [锁]分为[创建锁][获取锁][释放锁] 1.allocate_lock函数 [创建锁对象] 2.acquire方法[获取锁], 3.release方法[释放锁] 完成[锁]这三个功能需要_threa ...

  6. python多线程为什么要用队列_Python程序中的线程操作-线程队列

    一.线程队列 queue队列:使用import queue,用法与进程Queue一样 queue is especially useful in threaded programming when i ...

  7. python多线程知识点(只能说是知道有多线程一个词而已,摸摸头顶,还有毛)

    把关于多线程记录一下 1.线程和进程 https://blog.csdn.net/weixin_47021806/article/details/115471835 2.使用单/多线程执行程序展示 h ...

  8. python 多线程实现多任务,多进程实行多任务

    目录 1 多线程实现多任务 1.1 什么是线程? 1.2 一个程序实现多任务的方法 1.3 多线程的创建方式 1.3.1 创建threading.Thread对象 1.3.2 继承threading. ...

  9. Python3多线程_thread模块的应用

    文章目录 前言 一.Python3多线程 二._thread模块 1.单线程 2.多线程 总结 前言 参考文章 Python多线程_thread和Threading Python3 多线程 ⭐ Pyt ...

最新文章

  1. 《深入理解计算机系统》读书笔记六:整数表示
  2. 三插头内部结构图_三方面维护硬度计才能使寿命更长久
  3. mysql 端口 telnet 不通_3306端口不通,不一定是网络的问题
  4. AE一键快速生成MG爆炸图形动画插件:Burst Box for Mac
  5. micronaut pk spring boot
  6. 渗透测试——XP工具练习
  7. 基于IC设计的实用ISP算法介绍
  8. python - TXT章节文转为epub和mobi格式
  9. 【分享】这款微信电子名片真的很值得拥有!
  10. OSEK Os的任务调度
  11. 囍游记----[转_]
  12. C语言程序设计第四次作业-选择结构(2)
  13. hotmail 获取邮箱授权码
  14. 微信现已开通手表及手环支付
  15. 红米note3 Android N,骁龙650的力量 红米Note3全网通版评测
  16. 什么是在制品限制?通过这篇文章,让你搞明白
  17. 微软 Build 2016年开发者大会发布多项功能升级
  18. 数论-快速幂、矩阵快速幂、慢速乘
  19. 云计算介绍 tcp/ip协议介绍及配置
  20. Visual Studio滚动条设置

热门文章

  1. bzoj 2131: 免费的馅饼【dp+树状数组】
  2. 排序sort,统计wc
  3. 开源原生JavaScript插件-CJPCD(省市区联动)
  4. mongodb count 导致不正确的数量(mongodb count 一个坑)
  5. python 2.7安装某些包出现错误:libxml/xmlversion.h:没有那个文件或目录
  6. FragmentActivity和Activity的区别
  7. 转:神经网络编程入门
  8. 标准BT.656并行数据结构
  9. [转]wince中解析reg和bib文件的不同之处
  10. LeetCode_database刷题记录(595. 大的国家)