python可以创建多少个进程
由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。 Python提供了非常好用的多进程包multiprocessing,只需要定义一个函数,Python会完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。
multiprocessing支持子进程、通信和共享数据、执行不同形式的同步,提供了Process、Queue、Pipe、Lock等组件。
python的多线程是怎么实现的,听说底层是依据win32的线层实现
python使用Global Interpreter Lock,简称GIL,把守解释器的大门,同时保护C API的调用,假如有A,B,C三个线程同时运行,如果A线程进入了解释器,GIL会把B,C挡在大门之外,在线程调度的时候,会重新调度一个线程进入解释器,至于何时调度,调用sys.getcheckinterval()查看,这个也可以通过set来设置,至于调度哪个线程,这个则完全交给操作系统去做,从原理上看,就是模拟了操作系统的原生线程。
python中的handle是什么方法
在Python中,handle是一个通用的词,经常用于表示某个对象、资源或连接。我们可以通过handle来操作和管理这些东西。
常见的Python handle有:
1. 文件handles
在使用Python操作文件时,我们使用文件handles来表示文件对象。
例如:
python
f = open("file.txt") # 创建一个文件handle
data = f.read() # 使用handle读取文件内容
f.close() # 关闭文件handle ,释放资源
这里`f`就是文件handle,我们通过它读取和操作文件。
2. Socket handles
我们通过socket的handle表示Socket连接,并通过它来发送和接收数据。
例如:
python
s = socket.socket() # 创建socket handle
s.connect(("www.google.com", 80)) # 使用handle建立连接
s.send(b"GET / HTTP/1.1\r\nHost: google.com\r\n\r\n")
data = s.recv(1024) # 使用handle接收数据
这里`s`就是Socket的handle。
3.数据库连接handles
例如用pymysql,我们通过游标cursor表示一个数据库会话:
python
connection = pymysql.connect(...)
cursor = connection.cursor() # 获取数据库连接handle
cursor.execute("SELECT * FROM users")
results = cursor.fetchall()
cursor.close() # 关闭handle
总的来说,在Python中,通过表示资源、对象或连接的handle,可以进行相应的操作。
handle值得注意的是:
- 每次操作结束后,应及时关闭handle,以释放资源
- 多个handle可同时存在,无需关闭的操作的handle
发表评论