zoukankan      html  css  js  c++  java
  • python 知识点

    类的反射器:

     python class.py sys.argv[1]

    #/usr/bin/env python
    # -*- coding:utf-8 -*-
    import sys
    class webserver(object):
        def __init__(self,host,port):
            self.host = host
            self.port = port
    
        def start(self):
            print('server %s is starting'%self.host)
    
        def stop(self):
            print('server %s is stoping'%self.host)
    
        def restart(self):
            self.start()
            self.stop()
    
    if __name__ == "__main__":
        server = webserver('localhost','333')
        if hasattr(server,sys.argv[1]): #判断参数是否在实例中
            func = getattr(server,sys.argv[1])#获取实例的内存地址
            func()#执行实例的方法可以传参数

     2.hashlib

    >>> import hashlib
    >>> m= hashlib.md5()
    >>> m.update("www")
    >>> m.update(b"123")
    >>> print(m.hexdigest())
    202cb962ac59075b964b07152d234b70
    

    3. 异常处理

    #/usr/bin/env python
    # -*- coding:utf-8 -*-
    while True:
        num1 = input("num1:")
        num2 = input("num2:")
    
        try:
            num1 = int(num1)
            num2 = int(num2)
            sum = num1 + num2
        except ValueError as e:
            print("vcalue err",e)
        except IndentationError as e:
            print("inde err",e)
        except Exception as e:#3.5写法 Exception 抓取所有错误
            print("信息错误,请重新输入!!")
            print(e)
        print(sum)
    异常处理

    4.线程和进程

    线程是操作系统能够进行运算调度的最小单位,它包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务

     进程:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。

    4.多线程实例:

    #/usr/bin/env python
    # -*- coding:utf-8 -*-
    import threading
    import time
    def sayhi(num):#定义每个线程要运行的函数
        print("running on number:%s"%num)
        time.sleep(3)
    
    if __name__ == '__main__':
        t1 = threading.Thread(target=sayhi,args=(1,)) #生成一个线程实例
        t2 = threading.Thread(target=sayhi,args=(2,)) #生成一个线程实例
    
        t1.start()
        t2.start()
    
    
        print(t1.getName()) #获取线程名
        print(t2.getName())
    直接调用
    #/usr/bin/env python
    # -*- coding:utf-8 -*-
    import threading
    import time
    
    
    class MyThread(threading.Thread):
        def __init__(self,num):
            threading.Thread.__init__(self)
            self.num = num
        def run(self):#定义每个线程要运行的函数 run写死的不能叫其他名字
            print("running on number:%s"%self.num)
            time.sleep(3)
    
    
    if __name__ == '__main__':
        t1 = MyThread(1)
        t2 = MyThread(2)
        t1.start()
        t2.start()
    继承式调用

    如果后续需要继续执行等待前面线程结束使用t1.john()函数 

    #/usr/bin/env python
    # -*- coding:utf-8 -*-
    import threading
    import time
    def sayhi(num):#定义每个线程要运行的函数
        print("running on number:%s"%num)
        time.sleep(3)
    
    if __name__ == '__main__':
        '''
        t1 = threading.Thread(target=sayhi,args=(1,)) #生成一个线程实例
        t2 = threading.Thread(target=sayhi,args=(2,)) #生成一个线程实例
    
        t1.start()
        t2.start()
    
    
        print(t1.getName()) #获取线程名
        print(t2.getName())
       '''
        t_list = []#使用阻塞空列表
        for i in range(10):
            t = threading.Thread(target=sayhi,args=[i,])
            t.start()
            t_list.append(t)
        for i in t_list:
            i.join()
        print('#'*5)
    直接调用+循环多线程+循环阻塞
    #/usr/bin/env python
    # -*- coding:utf-8 -*-
    import threading
    import time
    def addNum():
        global num #在每个线程中都获取这个全局变量
        print("--get num:",num)
        time.sleep(1)
        lock.acquire()#枷锁不能对时间
        num -=1 #对此公告变量减一
        lock.release()#释放锁
    
    lock = threading.Lock()#线程锁
    num = 100
    thread_list = []
    for i in range(100):
        t = threading.Thread(target=addNum)
        t.start()
        thread_list.append(t)
    for i in thread_list:
        i.join()
    
    print("final num:",num)
    线程锁实例
    #/usr/bin/env python
    # -*- coding:utf-8 -*-
    import threading
    import time
    def addNum(n):
        semapore.acquire()#获取信号量
        time.sleep(1)
        print("num:%s"%n)
        semapore.release()#释放信号量
    
    semapore = threading.BoundedSemaphore(2)#最大两个线程同时运行
    
    thread_list = []
    for i in range(20):
        t = threading.Thread(target=addNum,args=[i,])
        t.start()
        thread_list.append(t)
    for i in thread_list:
        i.join()
    信号量-同时允许多少个线程同时运行
  • 相关阅读:
    methodForSelector
    判定一个点P是否存在于指定的三角形ABC内
    xcode error failed to launch no such file or directory
    【转】SQLServer系统变量使用
    【转】SQL SERVER中查询某个表或某个索引是否存在
    wtforms
    Flask上下文管理、session原理和全局g对象
    Oldboy s4 Flask
    批处理删除文件夹下所有文件和文件夹
    autojs使用
  • 原文地址:https://www.cnblogs.com/cloud-80808174-sea/p/6896459.html
Copyright © 2011-2022 走看看