c语言编程笔录

首页 >   > 笔记大全

笔记大全

python在withPython

更新时间:2023-10-28

Python中使用with语句

在Python中,使用with语句可以有效避免一些资源管理的问题,例如文件或网络连接的关闭,事务处理的回滚等等。with语句会自动获取资源,并在代码块执行完后释放资源。

try:
    with open('file.txt', 'r') as file:
        content = file.read()
except:
    print('文件打开失败')

以上代码使用了with语句打开一个文件并读取其内容。with语句会自动调用close()方法关闭文件,无需手动管理文件资源。

Python中使用with实现数据库事务处理

在使用数据库时,事务处理是非常关键的。with语句可以结合数据库连接,保证事务处理的正确性。下面是一个MySQL数据库事务的示例:

import mysql.connector

config = {
    'user': 'root',
    'password': '123456',
    'host': 'localhost',
    'database': 'test'
}

try:
    conn = mysql.connector.connect(**config)
    cursor = conn.cursor()
    with conn:
        cursor.execute("DELETE FROM test_table WHERE age < 18")
    print("事务提交成功")
except mysql.connector.Error as e:
    print("事务提交失败:", e)

在上述代码中,with语句会自动提交事务或回滚事务。事务处理一般结合try...except使用,可以捕获连接错误和SQL语句执行错误等异常。

Python中使用with实现多线程的资源锁定

在多线程编程时,资源锁定非常重要。with语句可以结合lock对象,确保多个线程不会同时访问共享资源。下面是一个简单的多线程锁定的示例:

import threading

lock = threading.Lock()

def count():
    with lock:
        for i in range(5):
            print(i)

t1 = threading.Thread(target=count)
t2 = threading.Thread(target=count)

t1.start()
t2.start()

t1.join()
t2.join()

在上述代码中,由于使用了with语句和lock对象,所以在多个线程访问共享资源时不会发生错误的竞争情况。

Python中使用with语句实现网络通信

在使用socket进行网络通信时,with语句可以确保socket连接正确关闭,以便节省网络资源和保障网络安全。下面是一个socket编程的示例:

import socket

HOST = '127.0.0.1'
PORT = 8888

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()

    conn, addr = s.accept()
    with conn:
        print('进来了:', addr)
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data)

以上代码使用了with语句包裹socket连接,确保了程序正确的关闭网络连接。