Python多线程编程简单介绍
创建线程
格式如下
threading.Thread(group=None, target=None, name=None, args=(), kwargs={})
这个构造器必须用关键字传参调用
- group 线程组
- target 执行方法
- name 线程名字
- args target执行的元组参数
- kwargs target执行的字典参数
Thread对象函数
函数 描述
start() 开始线程的执行
run() 定义线程的功能的函数(一般会被子类重写)
join(timeout=None) 程序挂起,直到线程结束;如果给了 timeout,则最多阻塞 timeout 秒
getName() 返回线程的名字
setName(name) 设置线程的名字
isAlive() 布尔标志,表示这个线程是否还在运行中
isDaemon() 返回线程的 daemon 标志
setDaemon(daemonic) 把线程的 daemon 标志设为 daemonic(一定要在调用 start()函数前调用)
常用示例
格式
import threading
def run(*arg, **karg):
pass
thread = threading.Thread(target = run, name = "default", args = (), kwargs = {})
thread.start()
实例
#!/usr/bin/python
#coding=utf-8
import threading
from time import ctime,sleep
def sing(*arg):
print "sing start: ", arg
sleep(1)
print "sing stop"
def dance(*arg):
print "dance start: ", arg
sleep(1)
print "dance stop"
threads = []
#创建线程对象
t1 = threading.Thread(target = sing, name = 'singThread', args = ('raise me up',))
threads.append(t1)
t2 = threading.Thread(target = dance, name = 'danceThread', args = ('Rup',))
threads.append(t2)
#开始线程
t1.start()
t2.start()
#等待线程结束
for t in threads:
t.join()
print "game over"
输出
sing start: ('raise me up',)
dance start: ('Rup',)
sing stop
dance stop
game over
相关推荐
-
Python代理抓取并验证使用多线程实现
没有使用队列,也没有线程池还在学习只是多线程 复制代码 代码如下: #coding:utf8 import urllib2,sys,re import threading,os import time,datetime ''''' 这里没有使用队列 只是采用多线程分发对代理量不大的网页还行但是几百几千性能就很差了 ''' def get_proxy_page(url): '''''解析代理页面 获取所有代理地址''' proxy_list = [] p = re.compile(r'''''<d
-
python实现多线程暴力破解登陆路由器功能代码分享
运行时请在其目录下添加user.txt passwd.txt两文件.否则会报错.程序没有加异常处理.代码比较挫..... 复制代码 代码如下: #coding:utf-8- import base64 import urllib2 import Queue import threading,re,sys queue = Queue.Queue() class Rout_thread(threading.Thread): def __init__(self,queue,passwd): threa
-
Python实现的多线程端口扫描工具分享
昨晚今晚写了两晚,总算把Py Port Scanner 写完了,姑且称之为0.1版本,算是一个Python多线程端口扫描工具. 水平有限,实话中间有一些困惑和不解的地方,代码可能也写的比较乱.有些问题并未找到很好的解决方法,还望大家谅解.速度大家自己试验,我感觉还行. 送上效果图两份,分别是扫单IP和扫IP段: 源码: 复制代码 代码如下: # -*- coding: utf-8 -*- __author__ = 'Phtih0n' import threading, socket, sys,
-
Python中用Ctrl+C终止多线程程序的问题解决
复制代码 代码如下: #!/bin/env python # -*- coding: utf-8 -*- #filename: peartest.py import threading, signal is_exit = False def doStress(i, cc): global is_exit idx = i while not is_exit: if (idx < 10000000): print "thread[
-
Python使用代理抓取网站图片(多线程)
一.功能说明:1. 多线程方式抓取代理服务器,并多线程验证代理服务器ps 代理服务器是从http://www.cnproxy.com/ (测试只选择了8个页面)抓取2. 抓取一个网站的图片地址,多线程随机取一个代理服务器下载图片二.实现代码 复制代码 代码如下: #!/usr/bin/env python#coding:utf-8 import urllib2import reimport threadingimport timeimport random rawProxyList = []ch
-
python多线程编程中的join函数使用心得
今天去辛集买箱包,下午挺晚才回来,又是恶心又是头痛.恶心是因为早上吃坏东西+晕车+回来时看到车祸现场,头痛大概是烈日和空调混合刺激而成.没有时间没有精神没有力气学习了,这篇博客就说说python中一个小小函数. 由于坑爹的学校坑爷的专业,多线程编程老师从来没教过,多线程的概念也是教的稀里糊涂,本人python也是菜鸟级别,所以遇到多线程的编程就傻眼了,别人用的顺手的join函数我却偏偏理解不来.早上在去辛集的路上想这个问题想到恶心,回来后继续写代码测试,终于有些理解了(python官方的英文解释
-
理解python多线程(python多线程简明教程)
对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的MS-DOS时代,操作系统处理问题都是单任务的,我想做听音乐和看电影两件事儿,那么一定要先排一下顺序. (好吧!我们不纠结在DOS时代是否有听音乐和看影的应用.^_^) 复制代码 代码如下: from time import ctime,sleep def music(): for i in range(2): prin
-
python多线程编程方式分析示例详解
在Python多线程中如何创建一个线程对象如果你要创建一个线程对象,很简单,只要你的类继承threading.Thread,然后在__init__里首先调用threading.Thread的__init__方法即可 复制代码 代码如下: import threading class mythread(threading.Thread): def __init__(self, threadname): threading.Thread.__init__(self, name = thread
-
Python多线程编程简单介绍
创建线程 格式如下 复制代码 代码如下: threading.Thread(group=None, target=None, name=None, args=(), kwargs={}) 这个构造器必须用关键字传参调用 - group 线程组 - target 执行方法 - name 线程名字 - args target执行的元组参数 - kwargs target执行的字典参数 Thread对象函数 函数 描述 start() 开始线程的执行 run() 定义线程的功能的函数(一般会被子类重写
-
深入理解python多线程编程
进程 进程的概念: 进程是资源分配的最小单位,他是操作系统进行资源分配和调度运行的基本单位.通俗理解:一个正在运行的一个程序就是一个进程.例如:正在运行的qq.wechat等,它们都是一个进程. 进程的创建步骤 1.导入进程包 import multiprocessing 2.通过进程类创建进程对象 进程对象 = multiprocessing.Process() 3.启动进程执行任务 进程对象.start() import multiprocessing import time def
-
Python多线程编程之多线程加锁操作示例
本文实例讲述了Python多线程编程之多线程加锁操作.分享给大家供大家参考,具体如下: Python语言本身是支持多线程的,不像PHP语言. 下面的例子是多个线程做同一批任务,任务总是有task_num个,每次线程做一个任务(print),做完后继续取任务,直到所有任务完成为止. # -*- coding:utf-8 -*- #! python2 import threading start_task = 0 task_num = 10000 mu = threading.Lock() ###通
-
Python多线程编程(二):启动线程的两种方法
在Python中我们主要是通过thread和threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用threading模块实现多线程编程.一般来说,使用线程有两种模式,一种是创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行:另一种是直接从Thread继承,创建一个新的class,把线程执行的代码放到这个新的 class里. 将函数传递进Thread对象 复制代码 代码如下: ''' Cr
-
Python多线程编程(四):使用Lock互斥锁
前面已经演示了Python:使用threading模块实现多线程编程二两种方式起线程和Python:使用threading模块实现多线程编程三threading.Thread类的重要函数,这两篇文章的示例都是演示了互不相干的独立线程,现在我们考虑这样一个问题:假设各个线程需要访问同一公共资源,我们的代码该怎么写? 复制代码 代码如下: ''' Created on 2012-9-8 @author: walfred @module: thread.ThreadTest3 ''' impor
-
Python多线程编程(一):threading模块综述
Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势.在Python中我们主要是通过thread和 threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用 threading模块实现多线程编程.这篇文章我们主要来看看Python对多线程编程的支持. 在语言层面,Pyt
-
Python多线程编程(五):死锁的形成
前一篇文章Python:使用threading模块实现多线程编程四[使用Lock互斥锁]我们已经开始涉及到如何使用互斥锁来保护我们的公共资源了,现在考虑下面的情况– 如果有多个公共资源,在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,这会引起什么问题? 死锁概念 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程.
-
Python多线程编程(八):使用Event实现线程间通信
使用threading.Event可以实现线程间相互通信,之前的Python:使用threading模块实现多线程编程七[使用Condition实现复杂同步]我们已经初步实现了线程间通信的基本功能,但是更为通用的一种做法是使用threading.Event对象.使用threading.Event可以使一个线程等待其他线程的通知,我们把这个Event传递到线程对象中,Event默认内置了一个标志,初始值为False.一旦该线程通过wait()方法进入等待状态,直到另一个线程调用该Event的set
随机推荐
- javascript Select标记中options操作方法集合
- 详解oracle 日期格式(总结)
- Oracle解锁的方式介绍
- JS字符串函数扩展代码
- Asp.net实时显示文本框字数实现代码
- 用文本文件实现的动态实时发布新闻的程序
- asp 正则 过滤重复字符串的代码
- MySql安装步骤图文教程及中文乱码的解决方案
- MYSQL事务回滚的2个问题分析
- asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)
- php基于curl实现的股票信息查询类实例
- 对MySQL日志操作的一些基本命令总结
- Javascript动画效果(4)
- 非常不错的Flash缓动广告导航
- Ubuntu16.04安装MySQL5.7的教程
- iASP-让unix支持asp
- C++ COM编程之接口背后的虚函数表
- C++随机数生成实例讲解
- Java中JSON处理工具类使用详解
- mysql中常用日期比较与计算函数