进程和线程
"""
进程中至少有一条线程,线程和进程的开启非常类似,这里就展示线程
"""
from threading import Thread
from multiprocessing import Process
# 第一种开启的方法就是直接def
def func(name):
for i in range(100):
print(name, i)
if __name__ == '__main__':
t = Thread(target=func, args=('T1',)) # 创建线程,布置任务,传入参数(注意这里的参数必须是元素,里面加逗号)
t.start() # 告诉线程可以开始工作了
# 下面是主任务
for n in range(100):
print('主任务', n)
# 第二种方法是类继承
class MyThread(Thread):
def __init__(self, name): # 这里就是通过构造函数来传入参数name
Thread.__init__(self) # >>> 等价于super().__init__(),先继承父类的东西
self.name = name
def run(self):
for i in range(100):
print(self.name, i)
if __name__ == '__main__':
t = MyThread("T1") # 创建一个实例对象,并传参T1
t.start() # 告诉线程可以开始工作了,这里如果是t.run()是不对的,这是在调用方法,实际上是在主线程中同步执行的,而非并发
# 下面是主任务
for n in range(100):
print('主任务', n)
进程池和线程池
from concurrent.futures import ThreadPoolExecutor
def fn(name):
for i in range(1000):
print(name, i)
# main
# 创建线程池,并指定线程池大小为50workers
with ThreadPoolExecutor(max_workers=50) as t:
for i in range(100): # 提交100个任务到线程池,这50个workers会共同完成这100个任务。
t.submit(fn, name=f"线程{i}") # >>>> 这里是用submit提交,而不是start
# 提交完所有任务后,线程池会在with块结束时自动关闭
print("123")
标签:__,协程,name,爬虫,range,线程,print,100,多线程
From: https://www.cnblogs.com/abloger/p/18246215