python多线程
事件——threading.Event()
clear将flag设置为 False
set将flag设置为 True
is_set判断是否设置了flag
wait会一直监听flag,如果没有检测到flag就一直处于阻塞状态
事件处理的机制:全局定义了一个Flag,当Flag的值为False,那么event.wait()就会阻塞,当flag值为True,那么event.wait()便不再阻塞
信号量——threading.BoundedSemaphore()
semaphore = threading.BoundedSemaphore(需要开启的线程的整数值)
def run(n,semaphore):
semaphore.acquire() #加锁
time.sleep(3)
print('run the thread:%s\n' % n)
semaphore.release() #释放
多线程对于I/O型任务时,具有提高效率的作用;但在计算型任务中,并不能提高计算速度,甚至可能因为线程之间的转换而导致资源的浪费。
python基础
'str'.format()
用于向字符串中输入指定类型的特定内容。
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
# 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))
# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
class AssignValue(object):
def __init__(self, value):
self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value)) # "0" 是可选的
while True:
直观来看,就是while的内部代码将无限运行下去。
具体的功能:
采用该语句的核心思想是如果出现错误的话,可以继续循环。
while True:
name = input('请输入您的用户名:')
if name in d:
break
else:
print('您输入的用户名不存在,请重新输入')
continue
如果密码错误的话,提示您还有几次输入密码的机会:
count = 5
while count:
password = input('请输入您的密码:')
if d[name] == password:
print('进入系统')
break
else:
count -= 1
print('您输入的密码不正确,还有{}次输入机会'.format(count))
continue
global
当函数内部使用或是修改函数外部的变量时,需要在变量名前+global
文章评论