py函数

1 一些标准库

1.1 threading

threading 是 Python 标准库中用于实现多线程编程的模块。它提供了创建和管理线程的功能,使你能够在同一个程序中并发地执行多个任务。

使用 threading 模块,你可以轻松创建多个线程,每个线程可以执行不同的任务,从而提高程序的并发性和响应性。以下是一些常见的 threading 模块的用法:

  1. 创建线程:
    使用 threading.Thread 类可以创建一个新的线程,你需要将要执行的函数作为参数传递给它。例如:

    1
    2
    3
    4
    5
    6
    import threading

    def my_function():
    print("Hello from a thread!")

    my_thread = threading.Thread(target=my_function)
  2. 启动线程:
    使用 start() 方法来启动线程,它将开始执行你传递的函数。

    1
    my_thread.start()
  3. 等待线程完成:
    使用 join() 方法可以等待线程执行完成,然后再继续执行主线程的代码。

    1
    my_thread.join()
  4. 线程锁(Lock):
    在多线程环境中,可能会出现多个线程访问共享资源的问题。使用线程锁可以防止多个线程同时修改共享资源,从而避免竞争条件。

    1
    2
    3
    4
    5
    6
    7
    import threading

    lock = threading.Lock()

    def modify_shared_resource():
    with lock:
    # 修改共享资源的代码
  5. 其他功能:
    threading 模块还提供了其他一些功能,如定时器、信号量、条件变量等,用于更复杂的多线程编程。

当你使用 threading.Thread 创建一个新线程时,你需要传递一个函数作为 target 参数,这个函数将在新线程中执行。如果这个函数需要参数,你可以使用 args 参数来传递这些参数。以下是一个简单示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import threading

def print_numbers(start, end):
for i in range(start, end + 1):
print(i)

def print_letters():
for letter in 'abcdefghijklmnopqrstuvwxyz':
print(letter)

# 创建两个线程,一个打印数字,一个打印字母
number_thread = threading.Thread(target=print_numbers, args=(1, 10))
letter_thread = threading.Thread(target=print_letters)

# 启动线程
number_thread.start()
letter_thread.start()

# 等待两个线程执行完成
number_thread.join()
letter_thread.join()

print("Both threads have finished.")

在这个示例中,我们定义了两个函数 print_numbersprint_letters,分别用于打印数字和字母。然后,我们使用 threading.Thread 创建了两个线程,分别传递这两个函数作为 target 参数。print_numbers 函数需要 startend 参数,我们使用 args 参数将这些参数传递给函数。

接着,我们分别启动这两个线程,并使用 join() 方法等待它们执行完成。最后,我们输出 “Both threads have finished.” 来表示两个线程都已经完成了执行。

1.2 Socket常用函数接口及其原理

image-20230814174402437

client

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import socket

target_host = "192.168.233.129"
target_port = 6666

# create a socket object
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# connect the client
client.connect((target_host, target_port))

# send some data
client.send(b"GET / HTTP/1.1\r\nHost: google.com\r\n\r\n")

response = client.recv(4096)

print(response.decode())
client.close()

server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import socket

def listen_port():
listen_ip = '0.0.0.0' # 监听所有可用接口
listen_port = 6666 # 监听端口号

try:
# 创建一个TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定到指定地址和端口
server_socket.bind((listen_ip, listen_port))

# 开始监听
server_socket.listen(1)

print(f"正在监听端口 {listen_port} ...")

while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()

# 接收数据
data = client_socket.recv(1024).decode()
print(f"接收到来自 {client_address[0]} 的数据:{data}")

# 关闭与客户端的连接
client_socket.close()

except Exception as e:
print(f"监听端口时出错:{e}")

if __name__ == "__main__":
listen_port()

py函数
http://example.com/2023/07/20/py函数/
Author
John Doe
Posted on
July 20, 2023
Licensed under