'''
线程
cpu 数目小于任务:并发
CPU 核数大于任务:并行
'''
'''
threading
函数名() 调用函数
函数名 指示到函数的位置
'''
#没有使用线程的方法
import time
def sing():
for i in range(5):
print("singing")
# time.sleep(1)
def dance():
for i in range(5):
print("danceing")
# time.sleep(1)
def main():
sing()
dance()
main()
#使用线程
import threading
def sing_01():
for i in range(5):
print("singing")
def dance_01():
for i in range(5):
print("danceing")
def main_01():
t1=threading.Thread(target=sing_01)
t2=threading.Thread(target=dance_01)
t1.start()
time.sleep(1)
t2.start()
time.sleep(1)
print(threading.enumerate())
main()
class Mythread(threading.Thread):
def run(self):
for i in range(5):
print("mythread")
t=Mythread()
t.start()
'''
多线程共享全局变量
'''
num=100
def test():
global num
num+=100
print(num)
test()
print(num)
g_num=100
g_nums=[11,22]
def test_01(g_nums):
g_nums.append(33)
global g_num
g_num+=1
print("%d" % g_num)
print("%s" % str(g_nums))
def test_02():
print("%d" % g_num)
def main_01():
t1 = threading.Thread(target=test_01,args=(g_nums,)) #args 必须是元组
t2 = threading.Thread(target=test_02)
t1.start()
t2.start()
main_01()
'''
锁
'''
'''
多线程udp聊天器
'''
import socket
def recv_msg(udp_socket):
# 接收数据
while True:
recv_data = udp_socket.recvfrom(1024)
print(recv_data)
def send_msg(udp_socket,dest_ip,dest_post):
while True:
# 发送数据
send_data = input("输入要发送的数据:")
udp_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_post))
def mian_02():
# 1.创建套接字
udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 2.绑定本地信息
udp_socket.bind(("",7890))
# 3.获取对方的IP
dest_ip=input("输入IP:")
dest_post=int(input("输入端口:"))
# 4.创建线程
t_recv=threading.Thread(target=recv_msg,args=(udp_socket,))
t_send=threading.Thread(target=send_msg,args=(udp_socket,dest_ip,dest_post))
t_recv.start()
t_send.start()
if __name__ == '__main__':
mian_02()
Python 学习三
最新推荐文章于 2024-07-12 16:16:27 发布