多线程模块:thread
thread 常见用法如下:
thread.start_new_thread(function, args):用于开启一个新的线程,接收两个参数,分别为函数和该函数的参数,相当于开启一个新的线程来执行这个函数,注意函数的参数必须是元组类型的,例子如下,开启两个线程同时输出声音和画面
#!/usr/bin/env python
#-*- coding:utf-8 -*- import time
import thread def fun(name, n):
for i in range(n):
print name, i
time.sleep(1) thread.start_new_thread(fun, ('声音', 3))
thread.start_new_thread(fun, ('画面', 3)) time.sleep(3) # 这里要停止几秒,否则没等线程执行完进程就退出了
[root@localhost ~]$ python 1.py
画面 0
声音 0
画面 1
声音 1
画面 2
声音 2
thread.allocate_lock():用于创建一个锁对象,我们可以同时开启多个线程,但是在任意时刻只能有一个线程能在解释器运行,因此需要由全局解锁器(GIL)控制运行哪个线程
锁对象的常用方法如下:
lock = thread.allocate_lock() 创建一个锁对象
lock.acquire() 锁上锁,当某个线程被锁上之后,会优先执行这个锁的内容,直到锁释放才会执行其他线程
lock.locked() 查看锁的状态,如果已经被锁上了则返回True,否则返回False
lock.release() 释放锁,必须先获得锁才能释放锁
#!/usr/bin/env python
#-*- coding:utf-8 -*- import time
import thread def fun(name, n, lock):
for i in range(n):
print name, i
time.sleep(1)
lock.release() lock = thread.allocate_lock()
lock.acquire()
thread.start_new_thread(fun, ('声音', 3, lock))
thread.start_new_thread(fun, ('画面', 3, lock)) while lock.locked():
pass
[root@localhost ~]$ python 1.py
画面 0
声音 0
画面 1
声音 1
画面 2
声音 2
多线程模块:thread的更多相关文章
- [python]多线程模块thread与threading
Python通过两个标准库(thread, threading)提供了对多线程的支持 thread模块 import time import thread def runner(arg): for i ...
- Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块
Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fab ...
- Python多线程模块
引言 thread threading 1 Thread 11 下面使用threading模块实现与上面相同的功能 12 在创建新线程时还可以给Thread传递可调用类的对象这样使用类本身来保存信息 ...
- 用生动的案例一步步带你学会python多线程模块
鱼和熊掌不可兼得 鱼,我所欲也,熊掌,亦我所欲也,二者不可得兼,舍鱼而取熊掌者也. 从6月开始写公众号,连着四个月一直尽量保证一周五更,结果整天熬夜搞的身体素质骤降.十一休假决定暂时将公众号放放,好好 ...
- python笔记9 线程进程 threading多线程模块 GIL锁 multiprocessing多进程模块 同步锁Lock 队列queue IO模型
线程与进程 进程 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成.我们编写的程序用来描述进程要完成哪些功能以及如何完成:数据集则是程序在执行过程中所需要 ...
- 多线程模块的同步机制event对象
多线程模块的同步机制event对象 线程的核心特征就是他们能够以非确定的方式(即何时开始执行,何时被打断,何时恢复完全由操作系统来调度管理,这是用户和程序员无法确定的)独立执行的,如果程序中有其他线程 ...
- [ PyQt入门教程 ] PyQt5中多线程模块QThread使用方法
本文主要讲解使用多线程模块QThread解决PyQt界面程序唉执行耗时操作时,程序卡顿出现的无响应以及界面输出无法实时显示的问题.用户使用工具过程中出现这些问题时会误以为程序出错,从而把程序关闭.这样 ...
- Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享
Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com ...
- Perl 多线程模块 Parallel::ForkManager
Perl 多线程模块 Parallel::ForkManager 一个简单的并行处理模块.这个是用来对付循环的多线程处理. 放在循环前面. Table of Contents 1 Synops内容简介 ...
- (转)多线程——继承Thread 类和实现Runnable 接口的区别
java中我们想要实现多线程常用的有两种方法,继承Thread 类和实现Runnable 接口,有经验的程序员都会选择实现Runnable接口 ,其主要原因有以下两点: 首先,java只能单继承,因此 ...
随机推荐
- weblogic连接池问题总结(转载)
转自:某局Weblogic 连接池问题(现场报告)(Connection has been administratively disabled. Try later.) 目录 1. 概述 3 1.1 ...
- mysql 存入乱码问题
在使用mysql开发是,遇到一问题,java脚本里面的中文很正常,持久化之后数据库里面的数据则变成乱码,解决方式,在spring配置文件连接中加入指定编码格式,有些系统不需要,有些服务器系统需要,统一 ...
- 5种漂亮的纯CSS3动画按钮特效
这次我们要来分享一款很不错的CSS3按钮动画,这款CSS3按钮一共有5种动画方式,每一种都是鼠标滑过动画形式,虽然这些动画按钮不是十分华丽,但是小编觉得不像其他按钮那样很难扩展,我们可以修改CSS代码 ...
- 深入学习RabbitMQ(四):channel的confirm模式
转自:http://m.blog.csdn.net/article/details?id=54340711 上一篇博客我们介绍了使用RabbitMQ可能会遇到的一个问题,即生产者不知道消息是否真正到达 ...
- thrift学习之一-------介绍
thrift 官网: http://thrift.apache.org/ Thrift是一个软件框架,用于支持可扩展的跨语言服务的开发,它无缝的与C++,Java,Python,PHP,Ruby,E ...
- C语言 · Huffuman树
基础练习 Huffuman树 时间限制:1.0s 内存限制:512.0MB 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出 ...
- kubernetes健康检查
有时候容器在running的状态,但是里面的服务挂了,这个就难办了,所以k8s提供了一种检查服务是否健康的方法 Liveness Probe的种类: ● ExecAction:在container中执 ...
- 早前的java笔记
多个if语句时即使前一个if为真,后面的if也要继续判断, 如果用else if 则只有前者为假的时候它的if 才接着判断. if else 语句 if a>=5 shuchu b=10 els ...
- asp.net mvc 4 AntiForgery 提供的防伪标记适用于用户“”,但当前用户为“XX” 问题处理记录
情景: 某页面未登录下可以访问,但具体操作时发现未登录就弹出登录窗,待完成登录后继续操作. 当登录成功,前端继续操作(post后端接口)时发现以下错误: 提供的防伪标记适用于用户“”,但当前 ...
- MySQL5.7远程连接和增加密码
主要是5.7的很多操作和以前版本不一样,所以踩了很多坑. 1. 远程连接cant connect to mysql (10061) 一开始以为是权限问题,所以参考了详解 MySQL 5.7 新的权限与 ...