文档章节

七日Python之路--第四天(之多线程)

明天以后
 明天以后
发布于 2014/07/24 15:16
字数 721
阅读 144
收藏 0
(一)程序,进程,线程

    程序,为解决某特定问题而用计算机语言编写的命令序列的集合。静态,一个程序可以有多个进程。

    进程,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。动态,程序的动态运行。

    线程,是进程中某个单一的顺序的控制。

    在单个程序中,同时运行多个线程完成不同的工作,称为多线程。

# 一段简单的代码

#!/usr/bin/python
#coding:utf-8

import time

def lop(name,times=2,sleeptime=0):
    for i in xrange(times):
        time.sleep(sleeptime)
        print '%s:%s' % (name,i)

lop('a',3)
lop('b',3)

    python中,拥有众多的类库。对于线程,需要使用到Python中thread模块。

(二)线程锁

    线程的运行:任意时刻只能有一个线程在执行。

    thread模块:可在Python中,使用help(thread)查看帮助

#!/usr/bin/python
#coding:utf-8

import time
import thread

def lop(name,times,sleeptime,l):
    for i in xrange(times):
        time.sleep(sleeptime)
        print '%s:%s' % (name,i)
    #进行解锁
    l.release()

#生成一个线程锁
lock = thread.allocate_lock()
#进行加锁
lock.acquire()
#新建一个线程
thread.start_new_thread(lop,('a',5,0,lock))

#当线程锁处于加锁状态时,进程继续执行
while lock.locked():
    pass

    注:程序代码在开始执行时,便形成了一个进程。或者说进程就是程序代码的一次动态执行过程。当执行到thread.start_new_thread()时,便新建了一个线程,然后由线程去执行lop()函数。此时进程继续执行,倘若不加线程锁,刚才新建的线程会随着该进程的结束而结束,可能会导致线程没执行完就意外终止。

    thread只是Python中提供的一个对线程简单的控制。更复杂的控制需要使用,threading模块。

thread.start_new_thread(function, args[, kwargs])
    Start a new thread and return its identifier.  The thread executes the functionfunction with the argument list args (which must be a tuple).  The optionalkwargs argument specifies a dictionary of keyword arguments. When the function
    returns, the thread silently exits.  When the function terminates with an
    unhandled exception, a stack trace is printed and then the thread exits (but
    other threads continue to run).
thread.allocate_lock()
    Return a new lock object.  Methods of locks are described below.  The lock is
    initially unlocked.

lock.acquire([waitflag])
    Without the optional argument, this method acquires the lock unconditionally, if
    necessary waiting until it is released by another thread (only one thread at a
    time can acquire a lock — that’s their reason for existence).  If the integerwaitflag argument is present, the action depends on its value: if it is zero,
    the lock is only acquired if it can be acquired immediately without waiting,
    while if it is nonzero, the lock is acquired unconditionally as before.  The
    return value is True if the lock is acquired successfully, False if not.
lock.release()
    Releases the lock.  The lock must have been acquired earlier, but not
    necessarily by the same thread.
lock.locked()
    Return the status of the lock: True if it has been acquired by some thread,False if not.


    关于线程的知识点比较多......Orz.

    稍后再做研究,先看Django去了 ......

                                                                                        --2014.7.24 15:17

© 著作权归作者所有

明天以后

明天以后

粉丝 76
博文 130
码字总数 87367
作品 0
昌平
程序员
私信 提问
七日Python之路--第一天

网上的资源是丰富的。但难免有些过时的信息,比如我现在使用的是去年下载的python3.3,而网上多数都是Python2.7。 差别比较大的就是:①读取用户输入raw_input()已经不能使用,只能使用input...

明天以后
2014/07/21
1.9K
0
七日Python之路--第十天

(一)PyCharm 试用一下,目前VIM只是当做记事本来用,还有好多命令不熟悉,基本就把VIN浪费了。由于之前Java使用Eclipse,这个IDE貌似跟那个差不多,试试吧。官网下载地址:http://www.jetb...

明天以后
2014/07/31
240
0
七日Python之路--第二天

由于之前使用过一段Ubuntu,所以基本命令啥的都还可以。装差利器Vim也是使用过一段时间的。 Ubuntu快速打开终端Alt+Ctrl+T,这样才显得犀利一些嘛。说实话,终端编辑文件啥的,确实比Win下面...

明天以后
2014/07/22
518
0
七日Python之路--第五天(之找点乐子)

(一)一些闲言碎语 刚才在搜索的时候,看到别人说的一句话,大体意思如下:自从学习Python之后,就不想在学习其他语言了,只想抓紧时间写些有用的东西。细想一下,果真如此。 唉,Python魅力...

明天以后
2014/07/26
141
0
余额宝七日年化收益率 - 知乎

现状 我们经常会看到这样的图表: 问题 你注意到了什么? 你想知道什么? 这些图上发生了什么? 你可能首先会问,余额宝是什么?七日年化率怎么计算?为什么七日年化率不断波动,影响它波动的...

AntV
2019/10/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Elasticsearch入门 - 功能特点介绍

开篇 上一篇主要简单介绍了下 Elasticsearch(简称: ES) 的官方概念,本篇主要介绍 Elasticsearch 的主要功能特点以及使用场景,文章内容是总结多篇文章及视频资料整理出来。 功能 1. 分布...

nimo10050
30分钟前
19
0
六、Spring Cloud之配置中心config

前言 前面我们讲了微服务的注册中心、负载均衡、熔断处理、网管服务。接下来我们讲配置中心,为什么要用配置中心呢? 其实我们接触一段时间就可以发现,我们的项目还是非常多的,每个项目都有...

quellanan2
30分钟前
33
0
在Android的EditText视图中允许多行?

如何在Android的EditText视图中允许多行? #1楼 这对我有用 ,实际上这两个属性很重要: inputType和lines 。 此外,您可能需要一个滚动条,下面的代码显示了如何制作一个: <EditText ...

技术盛宴
34分钟前
25
0
分享自己写的JS版日期格式化和解析工具类,绝对好用!

前言 本来想模仿Java里面的SimpleDateFormat()对象的,但是感觉这样用起来不方便,所以还是直接写成单独的方法算了。 原文链接 日期格式化 2.1. 使用说明 formatDate(date, fmt),其中fmt支持...

SuShine
44分钟前
42
0
快递鸟api物流查询接口实现订阅物流轨迹单号查询功能对接调用

背景: 分享一篇关于在电商系统中同步物流轨迹到本地服务器的文章,当前方案使用了快递鸟集成api做为数据来源接口,这个接口是免费使用的,不过提供的功能还是非常强大的,有专门的售后维护团...

程序的小猿
49分钟前
46
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部