浅谈python多线程与多进程

在数量较大的事件中(高并发)python的会受GIL(全局解释锁)影响变慢,GIL只存在于Cpython这个解释器中,使用其他其他解释器不受影响;推荐使用进程,但是进程并不是完美的,应为进程的最小单位是线程,一个进程还包含其他线程,下面是一个简单例子说明在高并发中cpython解释器中线程处于劣势:

import multiprocessing
import threading
from time import ctime
import time
def t1():
    for i in range(1000000):
        print("{}start:{}".format(i,ctime()))

def t2():
    for i in range(1000000):
        print("{}start1:{}".format(i, ctime()))

'''a = threading.Thread(target=t1)
     b = threading.Thread(target=t2)
     a.start()
     b.start()
     a.join()
     b.join()'''
'''a = multiprocessing.Process(target=t1)
     b = multiprocessing.Process(target=t2)'''
if __name__ == '__main__':
     T = time.time()
     print("------------------")
     a = multiprocessing.Process(target=t1)
     b = multiprocessing.Process(target=t2)
     a.start()
     b.start()
     a.join()
     b.join()
     te = time.time()
     print("using time: " + str(te - T) + "s")
#1. 32.24247074127197s不使用线程、进程
#2. 39.16404151916504s使用线程
#3. 23.140634298324585s使用进程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值