python的协程和多线程_Python 全栈:多线程和协程入门练习

226 Python 如何创建线程

创建一个线程:

import threading

my_thread = threading.Thread()

创建一个名称为 my_thread 的线程:

my_thread = threading.Thread(name='my_thread')

创建线程,需要告诉这个线程,它能帮助我们做什么。

做什么,是通过参数 target 传入,参数类型为 callable。

In [49]: def print_i(i):

...: print('打印i:%d'%(i,))

In [50]: my_thread = threading.Thread(target=print_i,args=(1,))

my_thread 线程已全副武装,但是,我们得按下发射按钮,启动 start(),它才开始真正起飞。

In [52]: my_thread.start()

打印结果如下,其中 args 指定函数 print_i 需要的参数 i,类型为元组。

打印

i:1

227 多线程:交替获得 CPU 时间片

为了更好解释,假定计算机是单核的,尽管对于 cpython,这个假定有些多余。

开辟 3 个线程,装载到 threads 中:

In [1]: import time

In [3]: import threading

In [14]: def print_time():

...: for _ in range(5): # 在每个线程中打印 5 次

...: time.sleep(0.1) # 模拟打印前的相关处理逻辑

...: print('当前线程%s,打印结束时间为:%s' %(threading.current_thread().getName(

...: ),time.time()))

In [7]: threads = [threading.Thread(name='t%d'%(i,),target=print_time) for i in range(3)]

启动 3 个线程:

In [8]: [t.start() for t in threads]

Out[8]: [None, None, None]

打印结果,如下,

当前线程t0,打印结束时间为:1582761727.4976637

当前线程t1,打印结束时间为:1582761727.4976637

当前线程t2,打印结束时间为:1582761727.498664

当前线程t0,打印结束时间为:1582761727.597949

当前线程t1,打印结束时间为:1582761727.597949

当前线程t2,打印结束时间为:1582761727.599801

当前线程t1,打印结束时间为:1582761727.6984522

当前线程t0,打印结束时间为:1582761727.6984522

当前线程t2,打印结束时间为:1582761727.7001588

当前线程t1,打印结束时间为:1582761727.7988598

当前线程t0,打印结束时间为:1582761727.7996202

当前线程t2,打印结束时间为:1582761727.8006535

当前线程t1,打印结束时间为:1582761727.8994005

当前线程t0,打印结束时间为:1582761727.900454

当前线程t2,打印结束时间为:1582761727.9024456

根据操作系统的调度算法,t0, t1, t2 三个线程,轮询获得 CPU 时间片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值