机器学习05

import threading
import time
import multiprocessing
# 子类继承父类


class Person(object):
    def __init__(self, name, age):

        self.name = name
        self.age = age

    def sleep(self):
        print(self.name + '正在睡觉')

# 继承父类


class Student(Person):
    def __init__(self, name, age, school):
        # 第一种写法
        # 使用super调用父类方法
        super(Student, self).__init__(name, age)
        # self.name = name
        # self.age = age
        # 子类在父类之上添加新的功能
        # 第二种写法
        # Person.__init__(self, name, age)
        self.school = school

    # 子类重写父类中sleep方法
    # 父类Person
    # 子类Student
    def sleep(self):
        print(self.name + '课间睡觉')

    def study(self):
        print(self.name + '学习')


s = Student('gll', 24, 'xx')

s.sleep()
print(Student.__mro__)
s.study()

'''
多态
基于继承
通过子类重写父类,达到不同子类对象调用相同的父类方法,得到不同的结果
'''


class Police(object):
    @staticmethod
    def work(self):
        print(self.name + '执行police.work_with()')


class Example(object):
    def __init__(self, name, dog):
        self.name = name
        self.dog = dog

    def work_with(self):

        self.dog.work(self)


P = Police()
police = Example('g', P)
police.work_with()

'''
多线程
'''


# def dance():
#     for i in range(50):
#         time.sleep(2)
#         print('跳舞')
#
#
# def singe():
#     for i in range(50):
#         time.sleep(1.3)
#         print('唱歌')
#
# # dance()
# # singe()


# t1 = threading.Thread(target=dance)
# t2 = threading.Thread(target=singe)
# t1.start()
# t2.start()

# 线程共享全局变量
# num = 20
#
# lock = threading.Lock()
#
#
# def sell1():
#
#     global num
#     while True:
#         lock.acquire()
#         # 加上同步锁
#         num -= 1
#         time.sleep(1)
#         lock.release()
#         # 释放锁
#         if num > 0:
#             print('1--***{}\n'.format(num))
#
#         else:
#             break
#
#
# def sell2():
#
#     global num
#     while True:
#         lock.acquire()
#         # 加上同步锁
#         num -= 1
#         time.sleep(1)
#         lock.release()
#         # 释放锁
#         if num > 0:
#
#             print('2--***{}\n'.format(num))
#         else:
#             print('end---->')
#
#             break
#
#
# t11 = threading.Thread(target=sell1)
# t21 = threading.Thread(target=sell2)
# t11.start()
# t21.start()
# 上面error
# 线程锁
# 加锁变慢、效率变低
# 进程使用m
def dance(m):
    for i in range(m):
        time.sleep(2)
        print('跳舞')


def singe():
    for i in range(5):
        time.sleep(1.3)
        print('唱歌')

# 进程与线程区别
# 进程是系统资源分配,调度的一个独立单位
# 线程是进程的一个实体,是CPU调度和分派的基本单位
# 进程在执行过程中有独立内存单元,线程共享内存
# 线程不能独立运行,必须依存进程


if __name__ == '__main__':
    #

    p1 = multiprocessing.Process(target=dance, args=(10,))
    # args 类型是元组
    p2 = multiprocessing.Process(target=singe)
    p1.start()
    p2.start()

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值