并发库 concurrent

# 导入concurrent.futures模块
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
import datetime

# 线程的执行方法
def print_value(value):
    print('Thread' + str(value))

# 每个进程里面的线程
def myThread(value):
    Thread = ThreadPoolExecutor(max_workers=2)
    Thread.submit(print_value, datetime.datetime.now())
    Thread.submit(print_value, datetime.datetime.now())

# 创建两个进程,每个进程执行myThread方法,myThread主要将每个进程通过线程执行
# 如果不填写max_workers=2,会根据计算机的每一个CPU创建一个Python进程,如果四核就创建四个进程
def myProcess():
    pool = ProcessPoolExecutor(max_workers=2)
    pool.submit(myThread, datetime.datetime.now())
    pool.submit(myThread, datetime.datetime.now())

if __name__ == '__main__':
    myProcess()

在上述代码中,创建了进程 ProcessPoolExecutor 和线程 ThreadPoolExe中又创建了两个线程。下面简单讲述一下concurrent futures属性和方法。
(1) Executor:Executor是一个抽象类,它不能被直接使用。为具体的异步执行定义了基本方法:ThreadPoolExecutor和 ProcessPoolExecut 继承了 Executor,分别被用来创建线程池和进程池的代码
(2)创建进程和线程之后, Executor 提供了 submite 和 map 方法最大的区别是参数类型,map 的参数必须是列表、元组和选代器的数据类型
(3) Future:可以理解为一个在未来完成的操作,这是异步编程IO操作和访问URL时,在等待结果返回之前会产生阻塞,cpu不能做其他事情,Furure 帮助我们在等待的这段时间可以完成其他的操作

 

def myProcess():
    with ProcessPoolExecutor(max_workers=2) as pool:
        for i in range(1,3):
            pool.submit(myThread,i,datetime.datetime.now())

可以用循环设置多个进程线程

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值