`
8366
  • 浏览: 807025 次
  • 性别: 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多线程和多进程.docx

    Python多线程和多进程

    Python多线程与多进程笔记1

    "Python多线程与多进程笔记1" Python 多线程和多进程是 Python 编程中两个重要的概念,它们分别对应着不同的并发编程模型。在本文中,我们将详细介绍 Python 中的多线程和多进程,并对比它们的异同。 多进程 多...

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

    在Python高级开发中,多线程和多进程是两个重要的概念,它们被广泛应用于提高程序的并发性能,尤其是在处理大量数据或需要同时执行多个任务时。本课程将深入讲解这两个主题,帮助开发者提升Python应用程序的效率。 ...

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

    本篇文章将深入探讨Python中的多线程和多进程概念,以及它们在实际应用中的优缺点。 首先,我们要理解“线程”和“进程”的基本概念。线程是程序执行的最小单位,一个进程中可以有多个线程,它们共享同一份内存空间...

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

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

    python多线程获取所有上市公司实时数据

    在金融领域,尤其是量化投资领域,实时获取和分析市场数据是至关重要的。...同时,如果能结合多进程和多线程的优势,在不同的任务上采用不同的并行计算策略,将能更有效地利用计算资源,实现更优的性能表现。

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

    在Python编程中,单线程、多线程和多进程是三种不同的并发执行方式,每种方式都有其独特的特点和适用场景。以下是对这些概念的详细解析: **单线程**: 在单线程编程中,程序的执行是顺序进行的,同一时间只能做一...

    python 多线程实现多个网址的多次快速访问

    在Python编程中,多线程是一种并发执行任务的机制,尤其在处理I/O密集型任务如网络请求时,能够显著提高程序效率。本教程将详细讲解如何使用Python的多线程来实现对多个网址的快速访问,并记录访问结果。 首先,...

    Python多线程编程

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

    python多线程定时器

    总结起来,`python多线程定时器`的实现涉及到Python的`threading`和`time`模块,通过`Thread`和`Timer`类来创建和管理线程,使用定时器控制线程的启动时间。主程序`main.py`使用这些工具来安排多个任务按设定的间隔...

    深入理解Python 多线程

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

    Python-多进程与多线程.pdf

    ### Python多进程与多线程知识点详解 #### 一、多进程 ##### 1.... 在Python中,`multiprocessing`模块提供了...以上是关于Python多进程和多线程编程的核心知识点,理解和掌握这些知识点对于编写并发程序是非常重要的。

    Python多线程编程(6寸)[归纳].pdf

    理解线程和进程的区别,熟练掌握`threading`和`Queue`模块的使用,以及了解如何处理线程安全问题,是成为Python多线程编程专家的基础。通过深入学习和实践,开发者可以充分利用多线程的优势,编写出更加优化的代码。

    python selenium chrome 多开 多线程

    本主题聚焦于如何使用Python的Selenium与Chrome浏览器进行多开和多线程操作,结合phantomjs和chromedriver这两个关键组件来实现。首先,让我们详细了解一下这些概念。 1. **Selenium**: Selenium是一个强大的Web...

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

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

    PYthon-multithreading-Test.rar_python_python 多线程_python多线程_多线程

    本压缩包“PYthon-multithreading-Test.rar”包含了有关Python多线程测试的源码,旨在帮助用户深入理解和实践Python的线程操作。 Python中的多线程是通过`threading`模块实现的,这个模块提供了基本的线程和同步...

    第20章 Python多线程编程.pdf

    Python多线程编程是一种允许程序同时执行多个线程的技术,以实现程序的并行处理。这通常适用于那些可以分解为多个独立任务的程序,其中各个任务之间能够并发执行,从而提高程序的效率和响应速度。 在操作系统中,...

    python多线程编程.rar

    Python多线程编程是Python系统编程中的重要组成部分,它允许程序同时执行多个任务,从而提高程序的效率和响应速度。在Python中,我们通常使用内置的`thread`库、`threading`库以及`Queue`库来实现多线程。 首先,`...

    基于Linux的python多线程爬虫程序设计.zip

    最后,`基于Linux的python多线程爬虫程序设计.pdf`很可能包含详细的教程和示例代码,读者可以结合这份文档深入学习多线程爬虫的实现细节。通过实际项目练习,可以更好地理解和掌握这一技术,提升自己的编程能力。在...

    python多线程非阻塞socket

    总结来说,Python中的多线程和多进程结合非阻塞Socket技术,能有效地提高网络服务的并发处理能力。服务端通过多线程接收连接请求,利用非阻塞Socket避免等待数据的阻塞,同时子进程处理接收到的数据。客户端则可以...

Global site tag (gtag.js) - Google Analytics