python 单线程_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 ' %(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 ' %(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())

运行结果:

运行结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值