• 任务81每日练习


    判断用户是不是root用户,root用户可添加删除:

    def pd(fun):
        def wrapper(name):
            if name == 'root':
                fun(name)
            else:
                print('不是root用户')
        return wrapper
    
    @pd
    def add_student(name):
        print ('添加学生信息...')
    @pd
    def del_student(name):
        print('删除学生信息...')
    
    add_student('root')
    del_student('root')

    装饰器实现一个函数计时器,可计算出函数的运算时间

    提示四个包:

    import time

    import random

    import string

    import functools

    import time
    import random
    import string
    import functools
    
    #问题1:被装饰的函数有返回值
    #问题2:如何保留被装饰函数的函数名和帮助信息文档
    
    li = [random.choice(string.ascii_letters) for i in range(100)]
    # print(li)
    
    def timeit(fun):
        @functools.wraps(fun)    #保留被装饰函数的函数名和帮助信息文档否则默认返回wrapper函数的帮助信息
        def wrapper(*args,**kwargs):
            """这是一个wrapper函数"""
            start_time = time.time()
            res = fun(*args,**kwargs)
            end_time = time.time()
            print('运行时间为:%.6f' %(end_time - start_time))
            return res    #有返回值返回,因为con_add()和join_add()函数没有返回值,可注释。
        return wrapper
    
    @timeit
    def con_add():
        """这是for循环"""
        s = ''
        for i in li:
            s += (i + ',')
        print(s)
    
    
    @timeit
    def join_add():
        """这是join方法"""
        print(','.join(li))
    
    @timeit
    def fun_list(n):
        """这是fun_list函数"""
        return [i * 2 for i in range(n)]
    
    @timeit
    def fun_map(n):
        """这是fun_map函数"""
        return list(map(lambda x:x*2,range(n)))
    
    
    con_add()
    # join_add()
    print(con_add.__doc__)
    print(con_add.__name__)
    # print(join_add.__doc__)
    # print(join_add.__name__)
    
    print(fun_list(5000))
    print(fun_map(5000))

    请写一个包含10个线程的程序,主线程必须等待每一个子线程执行完成之后才结束执行,每一个子线程执行的时候都需要打印当前线程名、当前活跃线程数量;

    from threading import Thread, currentThread, activeCount
    import time
    
    
    def task(n):
        print('线程名:%s----%s' % (currentThread().name, n))
        time.sleep(1)
        print('数量:%s' % activeCount())
    
    
    if __name__ == "__main__":
        t_li = []
        for i in range(10):
            t = Thread(target=task, args=(i,))
            t.start()
            t_li.append(t)
        for t in t_li:
            t.join()
    
        print('主,end----')

    写一个程序,包含十个线程,同时只能有五个子线程并行执行;

    from threading import Thread, Semaphore, currentThread
    import time
    
    
    def task(n):
        sm.acquire()
        print('%s---' % n, currentThread().name)
        time.sleep(1)
        print('end----')
        sm.release()
    
    
    if __name__ == '__main__':
        sm = Semaphore(5)
        for i in range(10):
            t = Thread(target=task, args=(i,))
            t.start()

    写一个程序,包含十个线程,子线程必须等待主线程sleep 10秒钟之后才执行,并打印当前时间

    from threading import Thread, Event
    import time
    import datetime
    
    
    def task():
        # while not event.is_set():
        #     print('...')
        print('...')
        event.wait(10)
        print('time:', datetime.datetime.now())
    
    
    if __name__ == '__main__':
        event = Event()
        for i in range(10):
            t = Thread(target=task)
            t.start()
    
        time.sleep(10)
        event.set()
  • 相关阅读:
    29.内置方法中之描述符
    28. 面向对象进阶之内置方法上
    Sort Colors*
    Implement Trie (Prefix Tree)
    Course Schedule
    Permutations
    Reverse Linked List
    Decode Ways
    Subsets *
    Longest Consecutive Sequence *
  • 原文地址:https://www.cnblogs.com/shirleysu90/p/12186243.html
Copyright © 2020-2023  润新知