自己改写的代码,用进程池,线程, 协程 及不用实现的

博客提及了进程池写、线程写和协程写三种写入方式,但未展开具体内容。这些写入方式在信息技术领域常用于处理并发任务,不同方式有不同特点和适用场景。

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

进程池写:


from multiprocessing import Process, Array,Pool
import time
def f(x):
    time.sleep(0.5)
    print(x)
    return x*x

if __name__ == '__main__':
    pool = Pool(processes=2) #最多可以跑11个进程
    res_list = []
    start=time.time()
    for i in range(100):
        res = pool.apply_async(f,[i,]) #apply同步 apply_async异步
        res_list.append(res)
    for l in res_list:
        #print(l)
        #l.get(timeout=9)  #超时apply_async
        l.get()  #超时apply_async
    end=time.time()
    print('the final',end-start)

线程写:

'''
#线程实现
import threading
import time
def f(x):
    time.sleep(0.5)
    print(x)
    return x*x


if __name__ == '__main__':
    start = time.time()
    for i in range(100):
        t1=threading.Thread(target=f,args=(i,))
        t2 = threading.Thread(target=f, args=(i,))
        t1.start()
        t2.start()
        #f(i)
    end=time.time()
    print('the final', end - start)
'''

协程写:

#协程

import time
def f(x):
    time.sleep(0.5)
    yield(x)
    return x*x


# if __name__ == '__main__':
#     start = time.time()
#     for i in range(100):
#         t1=threading.Thread(target=f,args=(i,))
#         t2 = threading.Thread(target=f, args=(i,))
#         t1.start()
#         t2.start()
#         #f(i)
#     end=time.time()
#     print('the final', end - start)

if __name__ == '__main__':
    start = time.time()
    for i in range(100):
        x1=f(i)
        next(x1)

    end=time.time()
    print('the final', end - start)

不用的


#from multiprocessing import Process, Array,Pool
import time
def f(x):
    time.sleep(0.5)
    print(x)
    return x*x


if __name__ == '__main__':
    start = time.time()
    for i in range(100):

        f(i)
    end=time.time()
    print('the final', end - start)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值