[python 学习] python 多线程
1、
# -*- coding: utf-8 -*-
import threading
import time
import random def go(name):
for i in range(2):
integer = random.randint(0,10)
print u'{} 前进{} 步.'.format(name,integer)
time.sleep(2) def back(name):
for j in range(500):
integer = random.randint(0,10)
print u'{} 后退{} 步.'.format(name,integer)
time.sleep(1) if __name__ == '__main__':
t1 = threading.Thread(target=go,args=('go',))
t2 = threading.Thread(target=back,args=('back',))
t1.start()
t2.start()
print 'stop stop stop'
上面的 go() 和 back() 交替休眠,谁获得执行权谁执行。(教随机)
2、经典的生产者消费者,两个线程能够 " 沟通 " 。
# -*- coding: utf-8 -*-
import threading
import time
import random
import sys def product(condition):
global integers
while True:
condition.acquire() #获得锁
print u'狗粮生产机启动.................................'
while integers < 100:
time.sleep(1)
integer = random.randint(0,10) #生产
integers = integers + integer
print u'生产了 {} 颗狗粮,总共 {} 颗狗粮'.format(integer,integers)
if integer in [6,8]:
print u'上次生产了 {} 颗狗粮,狗粮生产机要休息休息了,唤醒单身去吃狗粮'.format(integer)
break
print u'狗粮生产机停止................................'
condition.notify() #通知
#condition.wait()
condition.release() #释放锁 def customer(condition):
global integers
while True:
condition.acquire() #获得锁
while integers > 0:
time.sleep(1)
integer = random.randint(0,10)
integers_tmp = integers - integer
if integers_tmp < 0:
integer = integers
integers = 0
print u'单身狗吃 {} 颗狗粮,没有狗粮,汪汪汪...'.format(integer)
else:
integers = integers - integer
print u'单身狗吃 {} 颗狗粮,还有 {} 狗粮.'.format(integer,integers)
condition.notify() #通知
#condition.wait()
condition.release()#释放锁 if __name__ == '__main__':
integers = 0
condition = threading.Condition()
t1 = threading.Thread(target=product,args=(condition,))
t2 = threading.Thread(target=customer,args=(condition,))
t1.start()
t2.start()
上面的狗粮生产机(生产者)和单身狗(消费者),一个生产狗粮,一个吃狗粮。
[python 学习] python 多线程的更多相关文章
- 1 python学习——python环境配置
1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...
- Python学习---Python安装与基础1205
1.0. 安装 1.1.1. 下载 官网下载地址:https://www.python.org/downloads/release/python-352/ 1.1.2. 配置环境变量 因为在安装的时候 ...
- Python学习---Python下[元组]的学习
元组是不可变的, 用小括号()定义,而且一旦定义 ,不可变[类型是tuple] [元组看做一个整体,不可拆分,不可赋值,但可以全部重新赋值] 通过圆括号,用逗号分隔,常用在使语句或用户定义的函数能够安 ...
- Python学习---Python的异步IO[all]
1.1.1. 前期环境准备和基础知识 安装: pip3 install aiohttp pip3 install grequests pip3 install wheel pip3 install s ...
- Python学习--Python基础语法
第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗 ...
- python学习-python入门
开始学习python,开始记录. 第一个小程序:登陆系统 功能:1.通过文件名和密码导入用户名和密码~ 2.用户输入用户名和密码 3.将用户输入的用户名进行比对,先判断用户名是否在黑名单里面,如果在黑 ...
- Python学习——Python进程
python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包multiprocessing,只需要定 ...
- Python学习:python网址收集
Python学习网址收集: 语法学习:http://www.cnblogs.com/hongten/tag/python/ http://www.liaoxuefeng.com ...
- python学习--python 连接SQLServer数据库(两种方法)
1. python 学习.安装教程参照: http://www.runoob.com/python/python-tutorial.html 2. 集成开发环境 JetBrains PyCharm C ...
- Python学习--Python的了解与安装
Python简介: Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python 由荷兰人Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 19 ...
随机推荐
- kali的网络IP设置
进入配置文件,配置IP leafpad /etc/network/interfaces.conf 写入如下格式的内容: /etc/network/interfaces # This file desc ...
- [CSP-S模拟测试]:导弹袭击(数学+凸包+单调栈)
题目背景 $Guess$准备向敌军阵地发起进攻了!$Guess$的武器是自动制导导弹.然而在机房是不允许游戏的,所以班长$XZY$对游戏界面进行了降维打击,结果... 题目描述 众所周知,环境因素对导 ...
- FCC成都社区·前端周刊 第 2 期
01. Propel:JS的科学计算框架 Propel 是一种 JavaScript 科学计算框架,类似于 Python 中的科学计算库 NumPy,也就是说利用 JS 也可以进行机器学习啦.Prop ...
- java中 使用输入+输出流对对象序列化
对象: 注意记得实现 Serializable package com.nf147.sim.entity; import java.io.Serializable; public class News ...
- Matlab 中 函数circshift()的用法
a = [ ; ; ]; b = [- - -; - - -;- - -]; c = [ ; ; ]; Hist(:,:,) = a; Hist(:,:,) = b; Hist(:,:,) = c; ...
- uva live 7637 Balanced String (贪心)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- ORACLE DG临时表空间管理
实施目标:由于磁盘空间不足,将主库的临时表空间修改位置 standby_file_management 管理方式:AUTO SQL> show parameter standby_file NA ...
- qbzt day1 上午
内容提要 模拟,贪心 在讲这些东西之前,我们先来了解一个东西:high level 这个东西大体上就是你做题之前要先想清楚自己要写什么,怎么写,然后再写,不要有一点写一点 1.模拟 模拟算法算是很水的 ...
- django中自定义404错误页面
自定义404页面,如下5个步骤:1)使用自定义的404页面,必须在setting文件修改DEBUG = False(即关闭debug调试模式)2)必须在setting文件修改ALLOWED_HOSTS ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第4节 ArrayList集合_12-对象数组
对象数组是怎么回事呢? 新建Person类 代码生成后续的代码 生成一个无参构造 两个成员变量都选上,这是全参构造 生成getter和setter 数组的默认的第几0个元素是null 创建三个对象 输 ...