`
8366
  • 浏览: 797944 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

python 多线程 和 多进程

阅读更多

单线程例子:

 

#!/usr/bin/python
# -*- coding:UTF-8 -*-

# Name: danxiancheng.py

import time
import threading

def loop(num,sec):
    print 'loop %s start: ....' % num, time.strftime('%Y-%M-%d %H:%m:%S')
    time.sleep(sec)
    print 'loop %s stop: .....' % num, time.strftime('%Y-%M-%d %H:%m:%S')
 

def main():
    print '\nStarting: ........', time.strftime('%Y-%M-%d %H:%m:%S'), '\n'
    mysec = [3,5,6,8]
    for i in range(len(mysec)):
        loop(i,mysec[i])
    print '\nAll DONE: ........', time.strftime('%Y-%M-%d %H:%m:%S'), '\n'

if __name__=='__main__':
    main()
 

打印结果:

 

[root@xhu_node3 ~]# python singlethread.py

Starting: ........ 2012-33-27 05:12:12

loop 0 start: .... 2012-33-27 05:12:12
loop 0 stop: ..... 2012-33-27 05:12:15
loop 1 start: .... 2012-33-27 05:12:15
loop 1 stop: ..... 2012-33-27 05:12:20
loop 2 start: .... 2012-33-27 05:12:20
loop 2 stop: ..... 2012-33-27 05:12:26
loop 3 start: .... 2012-33-27 05:12:26
loop 3 stop: ..... 2012-33-27 05:12:34

All DONE: ........ 2012-33-27 05:12:34

[root@xhu_node3 ~]#

 

 

多线程的例子:

 

#!/usr/bin/python
# -*- coding:UTF-8 -*-

# Name: duoxiancheng.py

import time
import threading

def loop(num,sec):
    print 'loop %s start: ....' % num, time.strftime('%Y-%M-%d %H:%m:%S')
    time.sleep(sec)
    print 'loop %s stop: .....' % num, time.strftime('%Y-%M-%d %H:%m:%S')
 

def main():
    print '\nStarting: ........', time.strftime('%Y-%M-%d %H:%m:%S'), '\n'
    mysec = [3,5,6,8]
    mythreads = [threading.Thread(target=loop,args=(i,mysec[i])) for i in range(len(mysec))]

    for i in mythreads:
        i.start()
    for i in mythreads:
        i.join()
    print '\nAll DONE: ........', time.strftime('%Y-%M-%d %H:%m:%S'), '\n'

if __name__=='__main__':
    main()
 

 

 

执行结果:

 

[root@xhu_node3 ~]# python mutithread.py

Starting: ........ 2012-36-27 05:12:19

loop 0 start: .... 2012-36-27 05:12:19
loop 1 start: .... 2012-36-27 05:12:19
loop 2 start: .... 2012-36-27 05:12:19
loop 3 start: .... 2012-36-27 05:12:19
loop 0 stop: ..... 2012-36-27 05:12:22
loop 1 stop: ..... 2012-36-27 05:12:24
loop 2 stop: ..... 2012-36-27 05:12:25
loop 3 stop: ..... 2012-36-27 05:12:27

All DONE: ........ 2012-36-27 05:12:27

 

结论:

可以看到单线程中的两个循环, 只有一个循环结束后另一个才开始。而多线程则是进程内所有线程一起执行,同步任务。

首先创建了n个线程,并将其存放到mythreads列表中,这里用到的是给Thread类传递了函数,第一个for循环是让两个线程开始执行。第二个for循环再让每个线程分别调用join函数,使程序挂起,直至相应线程都执行结束。

 

 

 

多进程例子:

 

test.py

 

#!/usr/bin/python

import time
import os  
from os import environ 



class MyClass:
    def __init__(self):
        self.aa = 1

    def getA(self):
        return environ['FOO'] 

    def subA(self):
        self.aa += 1


if __name__ == '__main__':
    pass
 

 

pro.py

 

#!/usr/bin/python
import os
import sys
import time, datetime, traceback
from os import environ
from multiprocessing import Process
from test import MyClass

def create_compute(hostname):
        try:
            environ['FOO'] = hostname
            a = MyClass()
            print a.getA()
        except Exception as e:
            print e
            traceback.print_exc()

if __name__ == '__main__':
    plist = []
    for i in 4,5:
        p = Process(target = create_compute, args = ('node'+str(i),)) 
        plist.append(p);  
        p.start()
    for p in plist:  
        p.join()
 

 

执行结果:

 

[root@xhu_node3 ~]# python pro.py
node4
node5
[root@xhu_node3 ~]#

 

结论:

 

 两个进程中设置的环境变量 互不影响

 

多进程:


多线程:

分享到:
评论

相关推荐

    Python多线程和多进程编程(并发编程).rar

    通过这些资源,大家可以系统地学习编程的基础知识,掌握不同语言的语法和应用,深入了解软件开发的流程和技巧。此外,我还整理了一些优质的编程书籍、博客和社区论坛,以便大家可以与其他编程爱好者交流经验,解决...

    浅析Python多线程与多进程的使用

    这是讲解Python在使用过程中,多线程与多进程的使用。

    Python多线程编程

    Python多线程编程文档说明 多进程编程 一、 multiprocessing 模块 1. multiprocessing 模块提供了多进程编程的能力 它的API非常类似于 threading 模块,但是也提供了一些threading 模块不具有的能力 相比于线程,它...

    Python中单线程、多线程和多进程的效率对比实验实例

    主要介绍了Python单线程多线程和多进程效率对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    深入理解Python 多线程

    Python里的多线程是假的多线程,不管有多少核,同一时间只能在一个核中进行...首先说,多进程的进程之间是独立的,然后注意了,python的线程用的是系统的原生线程,python的进程也是用系统的原生进程,那原生进程是由

    完整版 Python高级开发课程 高级教程 08 Python多线程 多进程开发.pptx

    【Python高级开发课程 高级教程】课程列表 01 Python语言开发要点详解.pptx 02 Python数据结构.pptx ...08 Python多线程 多进程开发.pptx 09 Python爬虫框架Scrapy实战.pptx 10 Python Web开发框架Django实战.pptx

    python多线程多进程的常用操作。

    python多线程多进程的常用操作。包括 1. 调用进程 2. 进程池 3. 进程通信 Pipe,Queue 4. 调用线程 5. lock 6. threading.local() 在一个线程内,递归调用函数时,传递参数显得复杂,因此把参数保存在一个字典里,...

    python 单线程多线程和多进程的比较

    比较python 单线程,多线程和多进程的处理速度情况 测试用例为从redis中读出5W条keys,每个key含有48条记录,然后对这5W个keys分别求平均

    Python-多进程与多线程.pdf

    Python-多进程与多线程.pdf

    python多线程与多进程及其区别详解

    python多线程 python中提供两个标准库thread和threading用于对线程的支持,python3中已放弃对前者的支持,后者是一种更高层次封装的线程库,接下来均以后者为例。 创建线程 python中有两种方式实现线程: 1.实例化...

    第20章 Python多线程编程.pdf

    python多线程编程,适合进阶型学习者,实现多线程下的编程。

    Python多线程与多进程笔记1

    Python多线程与多进程笔记1

    Python程序设计:多线程爬虫.pptx

    Python多线程爬虫 Python多线程模块 在Python中可使用的多线程模块主要有两个,thread和threading模块。 threading模块允许创建和管理线程,提供了更多的同步原语。threading模块中最常用的类是Thread。 Python多...

    python3多进程多线程协程IO多路复用等

    对python并发进行的笔记整理,个人所学习使用,主要包括多进程,多线程,协程,IO多路复用,进程线程通信等

    python多线程压缩包

    程序运行起来,叫进程,进程是资源分配的单位,线程执行代码,一个线程只能执行一个任务,想要执行多个任务,就需要多线程 协程依赖于线程,线程依赖于进程,协程切换需要资源相当少,所以效率就会很高 重构:把...

    python利用多进程、多线程实现网络数据下载(百度地图api中规划路径数据)

    使用python的多进程、多线程技术,实现互联网数据的并行下载,一个进程可以设置n个线程,多进程通过开启多个运行脚本来实现,这样可以根据具体的硬件环境任意启动多个进程。数据主要是通过下载百度地图api中

    Python多线程套接字编程.docx

    Python多线程套接字编程 随着互联网的不断发展和普及,计算机网络交互也日趋复杂化。而套接字是实现网络数据交互的基本手段之一。Python语言得益于其简单易学和灵活的特点,在网络编程中也被越来越多地应用。本文将...

    python多线程编程示例(threading.py)

    1、多线程的理解 多进程和多线程都可以执行多个任务,线程是进程的一部分。...2、Python多线程创建 在Python中,同样可以实现多线程,有两个标准模块thread和threading,不过我们主要使用 更高级的threading模块。

    基于Python实现多进程的发送邮件.zip

    基于Python实现多进程的发送邮件.zip

    Python 多线程+多进程简单使用教程,如何在多进程开多线程

    关于python多进程多线程的相关基础知识,在我之前的博客有写过,并且就关于python多线程的GIL锁问题,也在我的一篇博客中有相关的解释。 为什么python多线程在面对IO密集型任务的时候会产生加速作用? 为什么python...

Global site tag (gtag.js) - Google Analytics