进程,线程,协程-python实现

本文详细介绍了Python中进程、线程和协程的概念与实现,包括线程的无序性、多线程共享全局变量及锁的使用,进程的创建与管理,以及协程的特性与原生协程的应用。通过实例展示了如何在Python中创建和管理这些并发执行单元,以提高程序的执行效率。
摘要由CSDN通过智能技术生成

进程,线程,协程-python实现

线程

创建线程

# 单线程
# import threading,time
#
# def func():
#     for i in range(5):
#         print("hello python")
#         time.sleep(1)
#
# if __name__ == '__main__':
# 创建线程对象
#     say_thread = threading.Thread(target=func)
# 启动
#     say_thread.start()


# 有参数的  args= ()    kwargs = {}
import threading, time


def func(name, age, sex):
    print(name, age, sex)


if __name__ == '__main__':
    # 创建线程对象      (target = 执行目标函数名)
    say_thread = threading.Thread(target=func, kwargs={
   'name': "老王", 'sex': '男', 'age': "18", })
    # 启动
    say_thread.start()

线程的性质 无序性

# .join()       #线程等待 执行完一个在执行下一个

import threading, time


def func(num):
    for i in range(num):
        print("hello python")
        time.sleep(1)


def func1(num1):
    for i in range(num1):
        print("hello world")
        time.sleep(1)


if __name__ == '__main__':
    print(threading.current_thread())  # <_MainThread(MainThread, started 11156)>
    # 在demo未创建程序之前,默认存在一个主线程,这个主线程的作用为:执行程序下方的代码,当代码执行完毕后,主线程默认结束
    # 创建子线程对象
    print("线程开始执行")
    say_thread = threading.Thread(target=func, args=(5,))
    say_thread1 = threading.Thread(target=func1, args=(6,))
    # 启动
    say_thread.start()
    say_thread.join()  # 线程等待 执行完一个在执行下一个
    say_thread1.start()
    say_thread1.join()  # 线程等待 执行完一个在执行下一个

    print("线程结束执行")

多线程共享全局变量

# 多线程在共享全局变量中
# 优点:重复代码的复用率(重复利用的简写) 
# 缺点:由于多线程之间出现了资源的恶意竞争问题,进而的会导致计算结果的错误和混乱

# 解决缺点的方法
# 1.0 join()


# 共享全局变量
# import threading
# alist = [11,22]
#
# def func1():
#     alist.append(33)
#     print(alist)
#
# def func2():
#     alist.append(44)
#     print(alist)
#
# if __name__ == '__main__':
#     #创建子线程
#     func1_thread = threading.Thread(target=func1)
#     func2_thread = threading.Thread(target=func2)
#     #启动
#     func1_thread.start()
#     func2_thread.start()


import threading

a = 0


def func1():
    global a
    for i in range(1000000):
        a += 1
    print(a
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值