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())
运行结果:
二、多线程
多线程,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())
运行结果:
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())
运行结果:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【Java EE】从零开始写项目【总结】
从零开发项目概述 最近这一直在复习数据结构和算法,也就是前面发出去的排序算法八大基础排序总结,Java实现单向链表,栈和队列就是这么简单,十道简单算法题等等... 被虐得不要不要的,即使是非常简单有时候绕半天,想不明白。 本来这篇博文是想留到我最后Java基础复习完再写出来的,鉴于公众号有的同学想看看邮箱登陆的案例,想看看Java开发后台是怎么的,于是我就提前写了这篇博文 这个项目是我自己手写的第一个SSM项目(毕竟学了当然得搞点事情,对吧),是上年写的小东西。当然了,现在回过头去看这个项目是有很多的不足的,仅供参考。用的也不是新技术,只是把我之前当时所学的一些东西做一个总结...如果想学新知识的同学看到这里就可以留步啦~ 所以说,你可能会看到比较旧的技术,写得不好的地方都会有~如果是写过项目的同学而言,这个仅仅是一个Demo。对于没写过项目的同学可以适当的参考一下,因为用的是非常简单的技术,都是耳熟能详的技术,不会有什么难懂的地方~ PS:希望各位大佬不要攻击它,我没有做任何的安全措施。即使留了评论的功能,XSS攻击防范也没做,请手下留情啊~ 地址: 预览:http://www.zh...
- 下一篇
一步一步教你如何用python操作mysql
工欲善其事,必先利其器。所以第一步,我们先下载第三方库。在这里,我用到的是pymysql库。 下载库:在命令行输入 1pip install pymysql 下载后可检验一下是否成功下载。直接在命令行进入python然后导库即可 1C:\Users\June>python2Python 3.6.3 |Anaconda, Inc.| (default, Oct 15 2017, 03:27:45) [MSC v.1900 64 bit (AMD64)] on win323Type "help", "copyright", "credits" or "license" for more information.4>>> import pymysql5>>> 看到这个画面就说明下载成功了,接下来学习如何操作数据库了!!! 连接数据库 1import pymysql2# 连接数据库3db = pymysql.connect(host='127.0.0.1',user='root',passwd='your password',db='news',por...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7设置SWAP分区,小内存服务器的救世主
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题