Python中定义多个函数进行多线程并行计算提升速度

1、不开多线程

1.1、代码

#不开启多线程演示
import time,threading
def foo(n):
    print('foo%s'%n)
    time.sleep(3)
def bar(n):
    print('bar%s'%n)
    time.sleep(2)
begin = time.time()

for n in range(3):
    t1 = threading.Thread(target = foo,args = (n,))
    t2 = threading.Thread(target = bar,args = (n,))
#t1.start()
#t2.start()
foo(1)
bar(2)
end = time.time()
process_time = end - begin
print('process time is:%s'%(str(process_time)))

1.2、结果:

foo1
bar2
process time is:5.0192155838012695

1.3、截图

1

2、开多线程

2.1、代码

#改写一下,开启两个线程

import time,threading
def foo(n):
    print('foo%s'%n)
    # time sleep() 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。
    time.sleep(1)
def bar(n):
    print('bar%s'%n)
    time.sleep(2)
begin = time.time()

for i in range(5):
    #创建了threads数组,创建线程t1,使用threading.Thread()方法,
    #在这个方法中调用music方法target=music,args方法对music进行传参。 把创建好的线程t1装到threads数组中。
    #定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:
    t1 = threading.Thread(target = foo,args = (i,))
    t1.start()#启动线程
t2 = threading.Thread(target = bar,args = (2,))
t2.start()

#但是,如果我们想让 Thread-1 子线程先执行,然后再让 MainThread 执行第 16、17 行代码,该如何实现呢?很简单,通过调用线程对象的 join() 方法即可。
#join() 方法的功能是在程序指定位置,优先让该方法的调用者使用 CPU 资源。该方法的语法格式如下: 
#thread.join( [timeout] )
#其中,thread 为 Thread 类或其子类的实例化对象;timeout 参数作为可选参数,其功能是指定 thread 线程最多可以霸占 CPU 资源的时间(以秒为单位),如果省略,则默认直到 thread 执行结束(进入死亡状态)才释放 CPU 资源。
t1.join()
t2.join()
end = time.time()
process_time = end - begin
print('process time is:%s'%(str(process_time)))

2.2、结果

foo0
foo1
foo2
foo3
foo4
bar2
process time is:2.0266456604003906

2.3、截图

2

3、若有问题,请挪步“佐佑思维”公众号

4、 ★佐佑思维二维码★

佐佑思维

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值