0. 多任务介绍
- 多个任务一起执行
- 并行:真的多任务,两核各自完成任务
- 并发:多任务交替执行,交替的足够快(时间片轮转)
1. 多线程
- 线程:程序运行起来之后,一定有一个执行代码的东西称之为线程
- 示例及说明
import time
import threading
def sing():
for i in range(5):
print('唱')
time.sleep(1)
def dance():
for i in range(5):
print('跳')
time.sleep(1)
def main():
t1 = threading.Thread(target=sing)
t2 = threading.Thread(target=dance)
t1.start()
t2.start()
thread_list = threading.enumerate()
print(thread_list)
len_thread_list = len(thread_list)
print(len_thread_list)
if __name__ == '__main__':
main()
- 详细说明
- 继承Thread类完成创建线程(创建类线程)
class MyThread(threading.Thread):
def run(self):
pass
if __name__=="__main__":
t = MyThread()
t.start()
- 多线程版udp聊天器
from socket 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_port):
while True:
send_data=input("请输入要发送的数据:")
udp_socket.sendto(send_data.encode('utf-8'),(dest_ip,dest_port))
def main():
udp_socket=socket(AF_INETT,SOCK_DGTAM)
udp_socket.bind(('',7890))
dest_id=input("请输入对方的ip:")
dest_port=input("请输入对方的端口:")
t_recv=threading.Thread(target=recv_msg, args=(udp_socket,))
t_send=threading.Thread(target=recv_msg, args=(udp_socket,dest_ip,</