文档章节

Python多线程和线程锁测试

思想永无止境
 思想永无止境
发布于 2016/11/04 12:00
字数 514
阅读 8
收藏 0

测试1

代码:

#coding=utf-8
import threading
from time import sleep


threadLock = threading.Lock()

def handle1(name,count):

    getlock=threadLock.acquire()
    print str(name)+"获取锁成功?"+str(getlock)

    for i in range(count):
        print str(name)+"处理了"+str(i+1)+"次事情"
        sleep(1)

    threadLock.release()

def handle2(name):

    for i in range(10):
        print str(name)+"处理了"+str(i+1)+"次事情"
        sleep(1)


threading.Thread(target=handle1,args=["张三",5]).start()
threading.Thread(target=handle2,args=('李四',)).start()

print "main thread end"

打印:

张三获取锁成功?True
张三处理了1次事情
main thread end
李四处理了1次事情
张三处理了2次事情
李四处理了2次事情
李四处理了3次事情
张三处理了3次事情
李四处理了4次事情
张三处理了4次事情
李四处理了5次事情
张三处理了5次事情
李四处理了6次事情
李四处理了7次事情
李四处理了8次事情
李四处理了9次事情
李四处理了10次事情

测试2

代码:

#coding=utf-8
import threading
from time import sleep


threadLock = threading.Lock()

def handle1(name,count):

    getlock=threadLock.acquire()
    print str(name)+"获取锁成功?"+str(getlock)

    for i in range(count):
        print str(name)+"处理了"+str(i+1)+"次事情"
        sleep(1)

    threadLock.release()

def handle2(name):

    getlock=threadLock.acquire()
    print  str(name)+"获取锁成功?:"+str(getlock)

    for i in range(10):
        print str(name)+"处理了"+str(i+1)+"次事情"
        sleep(1)

    threadLock.release()

threading.Thread(target=handle1,args=["张三",5]).start()
threading.Thread(target=handle2,args=('李四',)).start()

print "\n main thread end"

打印:

张三获取锁成功?True
张三处理了1次事情
 main thread end
张三处理了2次事情
张三处理了3次事情
张三处理了4次事情
张三处理了5次事情
李四获取锁成功?:True
李四处理了1次事情
李四处理了2次事情
李四处理了3次事情
李四处理了4次事情
李四处理了5次事情
李四处理了6次事情
李四处理了7次事情
李四处理了8次事情
李四处理了9次事情
李四处理了10次事情

© 著作权归作者所有

思想永无止境
粉丝 4
博文 257
码字总数 292814
作品 0
昌平
程序员
私信 提问
python GIL与伪多线程

https://blog.csdn.net/B9Q8e64lO6mm/article/details/81031283 为什么有人会说 Python 多线程是鸡肋?知乎上有人提出这样一个问题,在我们常识中,多进程、多线程都是通过并发的方式充分利用...

ka_ko
2018/09/22
0
0
为什么有人说 Python 多线程是鸡肋?

为什么有人会说 Python 多线程是鸡肋?知乎上有人提出这样一个问题,在我们常识中,多进程、多线程都是通过并发的方式充分利用硬件资源提高程序的运行效率,怎么在 Python 中反而成了鸡肋? ...

刘志军
2018/05/04
0
0
在python中单线程,多线程,多进程对CPU的利用率实测以及GIL原理分析

首先关于在python中单线程,多线程,多进程对cpu的利用率实测如下: 单线程,多线程,多进程测试代码使用死循环。 1)单线程: 2)多线程: 3)多进程: 查看cpu使用效率: 开始观察分别执行...

skysparrow
2018/05/13
0
0
Python怎么利用多核cpu

原文链接http://www.cnblogs.com/stubborn412/p/4033651.html def dead_loop(): def dead_loop(): {void DeadLoop() { while (true); } } from threading import Thread lib = cdll.LoadLibr......

dby_freedom
2018/05/06
0
0
Python的全局解释器锁(GIL)

转一篇关于Python GIL的文章。 归纳一下,CPU的大规模电路设计基本已经到了物理意义的尽头,所有厂商们都开始转向多核以进一步提高性能。Python为了能利用多核多线程的的优势,但又要保证线程...

seancheney
2017/11/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周四乱弹 —— 如果人生有机会 carl+z

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :How I wish I could choose between Heaven and Hell. How I wish I would save my soul. #今日歌曲推荐# 《Tears And Rain》- J...

小小编辑
36分钟前
137
4
一步步教你怎么用python写贪吃蛇游戏

目录 0 引言 1 环境 2 需求分析 3 代码实现 4 后记 0 引言 前几天,星球有人提到贪吃蛇,一下子就勾起了我的兴趣,毕竟在那个Nokia称霸的年代,这款游戏可是经典中的经典啊!而用Python(蛇)...

上海小胖
55分钟前
1
0
NIO基于长度域的报文在Netty下的解码

1, 先复习一下粘包/拆包 1.1, 粘包/拆包的含义 TCP是个“流”协议, 并不了解上层业务数据的具体含义, 它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP...

老菜鸟0217
今天
8
0
从零开始搭建spring-cloud(2) ----ribbon

在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。 其实我们已经在上...

Vincent-Duan
今天
25
0
get和post的区别?

doGet:路径传参。效率高,安全性差(get的传送数据量有限制,不能大于2Kb) doPOST:实体传参。效率低,安全性好 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Pos...

花无谢
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部