import time
from threading import Thread, current_thread, get_ident, active_count
def action():
"""
.current_thread(): 获取当前线程名
.get_ident(): 获取当前线程 id
"""
time.sleep(1) # 休眠 1 秒,用于统计活跃线程数
print(current_thread(), get_ident())
if __name__ == '__main__':
for i in range(10):
th = Thread(target=action)
th.start()
# 观察当前活跃的线程数
print(active_count())
from threading import Thread, current_thread, active_count
import time
class MyThread(Thread):
# obj.start() 实际上是用的 run() 方法
# 但是对象不能直接调用 run() 方法
# 直接调用就立即执行,成了单线程
# start() 是抛出进程到后台,形成多个线程,
# 每个独立的线程各自调用 run() 方法
def run(self) -> None:
time.sleep(1)
# 当前进程
print(current_thread())
if __name__ == '__main__':
th_list = []
for i in range(10):
th_obj = MyThread()
th_list.append(th_obj)
th_obj.start()
# 当前多少活跃进程
print(active_count())
from threading import Thread
import socket
import time
def server(conn, addr):
while 1:
msg_from_client = conn.recv(1024).decode('utf8')
if msg_from_client == 'q':
print(addr, ':', msg_from_client)
conn.send('bye'.encode('utf8'))
conn.close()
break
print(addr, ':', msg_from_client)
time.sleep(1)
msg_to_client = str(addr) + ',你好啊'
conn.send(msg_to_client.encode('utf8'))
if __name__ == '__main__':
socket_obj = socket.socket()
socket_obj.bind(('localhost', 8000))
socket_obj.listen(1024)
while 1:
# 来一个请求接收一个
# 没有请求就会阻塞在这里等待请求的到来
connection, address = socket_obj.accept()
th = Thread(target=server, args=(connection, address))
th.start()
import socket
socket_obj = socket.socket()
# 连接请求
socket_obj.connect(('127.0.0.1', 8000))
"""服务端收发消息是 connection"""
"""客户端收发消息是 socket 对象"""
"""一收一发,夯住循环"""
while 1:
msg_to_client = input('给服务端发消息>>>')
socket_obj.send(msg_to_client.encode('utf8'))
msg_from_server = socket_obj.recv(1024).decode('utf8')
print('msg_from_server:', msg_from_server)
if msg_from_server == 'bye':
break
socket_obj.close()
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。