发布于2019-08-22 19:35 阅读(1338) 评论(0) 点赞(10) 收藏(1)
import threading
import time
def f1():
"""
执行f1的时候需要锁住lock1,因此此前lock1必须处于已解锁状态,否则阻塞
只有当执行完毕一次f1之后,才能解锁lock2,f2才能继续执行
"""
for i in range(1, 52, 2):
# 锁住lock1,如果此时lock1不是处于未上锁状态,则等待lock1解锁之后才能往下进行
lock1.acquire()
print(i, end='')
print(i+1, end='')
# 解锁lock2
lock2.release()
def f2():
"""
执行f2的时候需要锁住lock2,因此此前lock2必须处于已解锁状态,否则阻塞
只有当执行完毕一次f2之后,才能解锁lock1,f1才能继续执行
"""
for i in range(26):
# 锁住lock2,如果此时lock2不是处于未上锁状态,则等待lock2解锁之后才能往下进行
lock2.acquire()
print(chr(i+ord('A')))
lock1.release()
if __name__ == '__main__':
# 建立两个线程锁
lock1 = threading.Lock()
lock2 = threading.Lock()
# 创建两个线程
f1_thread = threading.Thread(target=f1)
f2_thread = threading.Thread(target=f2)
# 先锁住lock2,也就是先不让f2执行
lock2.acquire()
# 当f1执行1次之后,lock2才会解锁f2才能执行
f1_thread.start()
f2_thread.start()
# 输出
12A
34B
56C
78D
910E
1112F
1314G
1516H
1718I
1920J
2122K
2324L
2526M
2728N
2930O
3132P
3334Q
3536R
3738S
3940T
4142U
4344V
4546W
4748X
4950Y
5152Z
本题主要考察就是线程锁的问题。
另外简单介绍下chr()函数:
用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的ascii字符。
语法chr(i)
i – 可以是10进制也可以是16进制的形式的数字。
返回值是当前整数对应的ascii字符。
示例:
>>>print(chr(0x30), chr(0x31), chr(0x61)) # 十六进制
0 1 a
>>> print(chr(48), chr(49), chr(97)) # 十进制
0 1 a
ord()函数:
ord()函数是chr()函数的逆向。
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
…
语法ord©
c – ascii字符。
返回值是对应的十进制整数。
示例:
>>>ord('a')
97
>>> ord('b')
98
>>> ord('c')
99
作者:熊猫烧香
链接:https://www.pythonheidong.com/blog/article/53451/3c056421ae559c42474b/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!
python经典书籍pdf下载(56)
python shell(0)
文件(0)
运行python脚本(0)
python(2)
人工智能(0)
python基础(0)
python高级(0)
IT编程电子书大合集(1)
linux(0)
bootstrap(0)
GUI编程tkinder(0)
python基础知识点(0)
ios(0)
java-2(0)