python04

本文深入探讨了进程和线程的概念,解释了操作系统如何以进程为单位分配存储空间,以及进程如何通过fork或spawn方式创建新进程。同时,文章详细介绍了Python中实现多进程的方法,包括使用os模块的fork函数在Unix/Linux系统上创建进程,以及使用multiprocessing模块的Process类在Windows系统上实现多进程编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程和线程

概念
进程就是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据,操作系统管理所有进程的执行,为它们合理的分配资源。进程可以通过fork或spawn的方式来创建新的进程来执行其他的任务,不过新的进程也有自己独立的内存空间,因此必须通过进程间通信机制(IPC,Inter-Process Communication)来实现数据共享,具体的方式包括管道、信号、套接字、共享内存区等。

def A():
for i in range(5):
yield i #将函数变成一个迭代器
#print(“hahah”)
#尝试执行try中的代码,如果有错,则被except捕获,但整个程序不会崩溃*
try:
a = A()
print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(next(a))
except Exception as e:
print(e)
print(“Hello world”)

不定长参数

*#args 相当于位置传参
def haha(*args):
print(args)
haha(1,2,3,4,5,6)

结果:(1, 2, 3, 4, 5, 6)

*#kwargs 相当于带参数名称的传参
def lala(**kwarges):
print(kwarges)
lala(a=1,b=2,c=3)

结果:{‘a’: 1, ‘b’: 2, ‘c’: 3}
def deco2(param):
print(param)
def deco(func):
def warp(*args,**kwargs):
print(args)
print(kwargs)
kwargs[“name2”] = 10000
return func(*args,**kwargs)
return warp
return deco
@deco2(1000)
def zzz(name2):
print(name2)

zzz(name2=“laoshu❤dami”)

结果:
1000
()
{‘name2’: ‘laoshu❤dami’}
10000

Python中的多进程

Unix和Linux操作系统上提供了fork()系统调用来创建进程,调用fork()函数的是父进程,创建出的是子进程,子进程是父进程的一个拷贝,但是子进程拥有自己的PID。fork()函数非常特殊它会返回两次,父进程中可以通过fork()函数的返回值得到子进程的PID,而子进程中的返回值永远都是0。Python的os模块提供了fork()函数。由于Windows系统没有fork()调用,因此要实现跨平台的多进程编程,可以使用multiprocessing模块的Process类来创建子进程,而且该模块还提供了更高级的封装,例如批量启动进程的进程池(Pool)、用于进程间通信的队列(Queue)和管道(Pipe)等。

#钩子:
#写三个页面:A,B,C
#去检测ip是否频繁访问,如果是,则不予访问,返回404,
def count(func):
def warp(*args,**kwargs):
num = kwargs[“num”]
if num > 4:
print(“404”)
else:
return func(*args,**kwargs)
return warp
@count
def Page_1(num):
print(“页面详情”)

if name == “main”:
for i in range(10):
Page_1(num=i)

结果:
页面详情
页面详情
页面详情
页面详情
页面详情
404
404
404
404
404

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值