python多线程,多进程

python多线程,多进程

1、在使用多线程之前,我们肯定能做到的事是:如何获取单个页面的数据

2、之后再上线程池,多个页面同时抓取

1、多线程

'''
理解线程,进程?
	进程是资源单位,每一个进程至少要有一个线程
	线程是执行单位

启动每一个程序,默认都会有一个主线程
'''

#多线程
#导入一个线程类的包
from threading import Thread

# def func():
#     for i in range(100):
#         print("func",i)
#
# if __name__ == '__main__':
#     t = Thread(target=func)   #创建线程,并给线程安排任务
#     t.start()   #多线程状态为可以开始工作状态,具体的执行时间由CPU决定
#     for i in range(100):
#         print("main",i)

#-----------------第二种写法--------------------------
# class MyThread(Thread):
#     def run(self):
#         for i in range(100):
#             print('子线程',i)
#
# if __name__ == '__main__':
#     t = MyThread()
#     t.start()    #开启线程
#     for i in range(100):
#         print('主线程',i)

#----------------------给线程传递参数:--------------------
def func(name):    # 传参??
    for i in range(100):
        print(name,i)

if __name__ == '__main__':
    t1 = Thread(target=func,args=('tp',))    #传递的参数必须是元组
    t1.start()

    t2 = Thread(target=func,args=('xch',))
    t2.start()

2、多进程

在python中,一些模块的使用方法很相似,API大致都是一个,可能就只换了一些包而已。

'''
多进程
'''

from multiprocessing import Process

def func():
    for i in range(100):
        print("子进程",i)

if __name__ == '__main__':
    p = Process(target=func)
    p.start()
    for i in range(100):
        print("主进程",i)

3、线程池

'''
线程池:一次性开辟一些线程,我们用户直接给线程池子提交任务。线程任务的调度交给线程池来完成。

'''
#导入线程池,进程池
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor

def fun(name):
    for i in range(1000):
        print(name,i)

if __name__ == '__main__':
    # 创建线程池
    with ThreadPoolExecutor(50) as t:
        for j in range(100):
            t.submit(fun,name=f"线程{j}")
    #等待线程池中的任务全部执行完毕,才继续执行(守护)
    print("123")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值