进程,线程,协程-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