开发者社区> keitwotest> 正文

python之单线程、多线程操作

简介: 前言 单线程和多线程是什么自行google补脑 对于python 单线程和多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂。所以,这里力图用简单的例子,对单线程和多线程有个初步的认识。
+关注继续查看

前言

单线程和多线程是什么自行google补脑

对于python 单线程和多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂。所以,这里力图用简单的例子,对单线程和多线程有个初步的认识。

一、单线程

单线程, 在好些年前的MS-DOS时代,操作系统处理问题都是单任务的,我想做微信聊天和看电影两件事儿,那么一定要先排一下顺序。

Demo-1

#coding:utf-8

import threading

from timeimport ctime,sleep

def weixin(func):

for iin range(2):

print(u'我在用微信同 %s 进行反馈、总结问题.%s' %(func,ctime()))

sleep(2)

def movie(func):

for iin range(2):

print(u'我在看电影 %s! %s ' %(func,ctime()))

sleep(5)

if __name__ =='__main__':

weixin(u'软件测试工程师')

movie(u'红海行动')

print('all over %s' %ctime())

运行结果:

img_545b1b36eed2a86e7677d583baa919ea.png
运行结果

二、多线程

多线程,python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补,为了不浪费时间,所以我们直接学习threading 就可以了

threading.Thread里面几个参数介绍

class Thread(_Verbose)

  __init__(self, group=None, target=None, name=None, args=(), kwargs=None, verbose=None)

      *group*:group参数必须为空,参数group是预留的,用于将来扩展;

  参数args和kwargs分别表示调用target时的参数列表和关键字参数。

      *target*: 参数target是一个可调用对象(也称为活动[activity]),在线程启动后执行

      *name*: 参数name是线程的名字。默认值为“Thread-N“,N是一个数字。

      *args*:传递给线程函数target的参数,他必须是个tuple类型.

      *kwargs*:kwargs表示关键字参数。字典类型 {}.

Demo-2:

#coding:utf-8

import threading

from timeimport ctime,sleep

def weixin(func):

for iin range(2):

print(u'我在用微信同%s 进行反馈、总结问题.%s' %(func,ctime()))

sleep(2)

def movie(func):

for iin range(2):

print(u'我在看电影<%s>!%s ' %(func,ctime()))

sleep(2)

threads = []

t1 = threading.Thread(target=weixin(func=u'软件测试工程师'))

threads.append(t1)

t2 = threading.Thread(target=movie(func=u'红海行动'))

threads.append(t2)

if __name__ =='__main__':

#weixin(u'软件测试工程师')

#movie(u'红海行动')

# print('all over %s' %ctime())

    for tin threads:

t.start()

print('all over %s' %ctime())

运行结果:

img_0609b93164b251aa19f3ae901ab90100.png
运行结果

Demo-3:

import threading

from timeimport ctime,sleep

def weixin(func):

for iin range(2):

print(u'我在用微信同%s 进行反馈、总结问题.%s' %(func,ctime()))

sleep(2)

def movie(func):

for iin range(2):

print(u'我在看电影<%s>!%s ' %(func,ctime()))

sleep(2)

threads = []

#t1 = threading.Thread(target=weixin(func=u'软件测试工程师'))

t1 = threading.Thread(target=weixin,args=("软件测试工程师",))

threads.append(t1)

#t2 = threading.Thread(target=movie(func=u'红海行动'))

t2 = threading.Thread(target=movie,kwargs={"func":"红海行动"})

threads.append(t2)

if __name__ =='__main__':

#weixin(u'软件测试工程师')

#movie(u'红海行动')

# print('all over %s' %ctime())

    for tin threads:

t.start()

print('all over %s' %ctime())

运行结果:

img_a58786e791267aaad9f5eb820b8e6ca6.png
运行结果

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
python爬虫中多线程的实现方式
python爬虫中多线程的实现方式
16 0
BXA
Python并发编程(多线程与多进程实践)
并发编程是指计算机系统中同时执行多个独立的计算任务。这些任务可以同时执行也可以按照一定的调度策略交替执行。在并发编程中执行的任务需要独立管理自身的资源,且需要与其他任务共享资源。
16 0
一日一技:Python多线程的事件监控
一日一技:Python多线程的事件监控
19 0
一日一技:Python多线程的事件监控
一日一技:Python多线程的事件监控
20 0
Python多线程下调用win32com包相关问题:pywintypes.com_error: (-2147221008, ‘尚未调用 CoInitialize。‘, None, None)问题处理
Python多线程下调用win32com包相关问题:pywintypes.com_error: (-2147221008, ‘尚未调用 CoInitialize。‘, None, None)问题处理
91 0
Python实战笔记(三) 多线程 下
Python实战笔记(三) 多线程
15 0
Python实战笔记(三) 多线程 上
Python实战笔记(三) 多线程
20 0
为什么有人说 Python 多线程是鸡肋?
为什么有人说 Python 多线程是鸡肋?
19 0
Python 强制停止多线程运行
Python 强制停止多线程运行
30 0
Python_关于多线程下变量赋值取值的一点研究
Python_关于多线程下变量赋值取值的一点研究
19 0
简单聊聊Go和python的多线程操作吧(互斥锁,线程同步)
简单聊聊Go和python的多线程操作吧(互斥锁,线程同步)
25 0
【python进阶】python多线程的实现方法,你还不知道吗?
多线程编程是一个非常重要的编程思想,本文主要介绍了python实现多线程的方法。
107 0
Python多线程爬虫编程中queue.Queue和queue.SimpleQueue的区别和应用
在Python中,queue模块提供了多种队列类,用于在多线程编程中安全地交换信息。其中,queue.Queue 和queue.SimpleQueue 是两个常用的先进先出(FIFO)的队列类,它们有以下区别和优缺点: queue.Queue 是一个更复杂的队列类实现涉及到多个锁和条件变量,因此可能会影响性能和内存效率。 SimpleQueue 是一个更简单的队列类它只提供了put()和get()两个方法,并且不支持maxsize参数
91 0
Python的多线程与多进程详解
全局解释器锁(GIL)导致了Python多线程无法利用多核CPU并发执行。引入GIL,是为了解决多线程之间数据完整性和状态同步的问题,简化了Python对共享资源的管理;但是也降低了并发编程的性能。
119 0
python多线程爬取汽车数据
python如何使用多线获取网站数据
157 0
+关注
keitwotest
小钟,职位是软件测试工程师,对软测行业有一定的知识累积,喜欢分享一些&lsquo;有趣&rsquo;的事。 接触的项目有:智能家居、智能行车记录仪、移动APP、web、H5等项目,简书爱好者,喜欢写作和分享一些自己学习技术上的一些技能知识,测试领域的一员。
文章
问答
视频
相关电子书
更多
双剑合璧-Python和大数据计算平台的结合
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多