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. 1 python学习——python环境配置

    1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...

  2. Python学习---Python安装与基础1205

    1.0. 安装 1.1.1. 下载 官网下载地址:https://www.python.org/downloads/release/python-352/ 1.1.2. 配置环境变量 因为在安装的时候 ...

  3. Python学习---Python下[元组]的学习

    元组是不可变的, 用小括号()定义,而且一旦定义 ,不可变[类型是tuple] [元组看做一个整体,不可拆分,不可赋值,但可以全部重新赋值] 通过圆括号,用逗号分隔,常用在使语句或用户定义的函数能够安 ...

  4. Python学习---Python的异步IO[all]

    1.1.1. 前期环境准备和基础知识 安装: pip3 install aiohttp pip3 install grequests pip3 install wheel pip3 install s ...

  5. Python学习--Python基础语法

    第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗 ...

  6. python学习-python入门

    开始学习python,开始记录. 第一个小程序:登陆系统 功能:1.通过文件名和密码导入用户名和密码~ 2.用户输入用户名和密码 3.将用户输入的用户名进行比对,先判断用户名是否在黑名单里面,如果在黑 ...

  7. Python学习——Python进程

    python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包multiprocessing,只需要定 ...

  8. Python学习:python网址收集

    Python学习网址收集: 语法学习:http://www.cnblogs.com/hongten/tag/python/             http://www.liaoxuefeng.com ...

  9. python学习--python 连接SQLServer数据库(两种方法)

    1. python 学习.安装教程参照: http://www.runoob.com/python/python-tutorial.html 2. 集成开发环境 JetBrains PyCharm C ...

  10. Python学习--Python的了解与安装

    Python简介: Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python 由荷兰人Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 19 ...

随机推荐

  1. Solr集群环境搭建

    一.准备工作 首先保证已经安装JDK工具包: [root@localhost opt]# java -version java version "1.8.0_144" Java(T ...

  2. MySQL的性能指标计算和优化方法

    MySQL的性能指标计算和优化方法1 QPS计算(每秒查询数) 针对MyISAM引擎为主的DB mysql> show global status like 'questions';+----- ...

  3. vmware 虚拟 CPU 性能计数器事件与主机 CPU 不兼容。

    错误提示:虚拟 CPU 性能计数器事件与主机 CPU 不兼容. 点放弃 如果是暂时状态选关机, 丢失掉运行状态,即可保留硬盘内容重新开机

  4. 【服务器】一次对Close_Wait 状态故障的排查经历

    最近接连听说一台线上服务器总是不响应客户端请求. 登录服务器后查询iis状态,发现应用程序池状态变为已停止. 按经验想,重启后应该就ok,第一次遇到也确实起了作用,当时完全没在意,以为是其他人无意把服 ...

  5. Numpy和Pandas

    NumPy是高性能科学计算和数据分析的基础包.数据结构为ndarray,一般有三种方式来创建.ndarray是N-Dimensions-Array(N维数组)的简称,ndarray要求元素数据类型一致 ...

  6. Week1 - 169.Majority Element

    这周刚开始讲了一点Divide-and-Conquer的算法,于是这周的作业就选择在LeetCode上找分治法相关的题目来做. 169.Majority Element Given an array ...

  7. dvorak键盘布局调整

    一站直达: http://www.kaufmann.no/roland/dvorak/

  8. 剑指offer--day10

    1.1 题目:二叉搜索树的后序遍历序列:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 1.2 思路: 以{ ...

  9. 2019寒假作业一:PTA7-1 打印沙漏

    - 打印沙漏 ( 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号: ...

  10. Sentinel之熔断降级

    除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一.由于调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积.Sentinel 熔断降级会在调用链路 ...