单线程例子:
#!/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多线程和多进程
"Python多线程与多进程笔记1" Python 多线程和多进程是 Python 编程中两个重要的概念,它们分别对应着不同的并发编程模型。在本文中,我们将详细介绍 Python 中的多线程和多进程,并对比它们的异同。 多进程 多...
在Python高级开发中,多线程和多进程是两个重要的概念,它们被广泛应用于提高程序的并发性能,尤其是在处理大量数据或需要同时执行多个任务时。本课程将深入讲解这两个主题,帮助开发者提升Python应用程序的效率。 ...
本篇文章将深入探讨Python中的多线程和多进程概念,以及它们在实际应用中的优缺点。 首先,我们要理解“线程”和“进程”的基本概念。线程是程序执行的最小单位,一个进程中可以有多个线程,它们共享同一份内存空间...
通过这些资源,大家可以系统地学习编程的基础知识,掌握不同语言的语法和应用,深入了解软件开发的流程和技巧。此外,我还整理了一些优质的编程书籍、博客和社区论坛,以便大家可以与其他编程爱好者交流经验,解决...
在金融领域,尤其是量化投资领域,实时获取和分析市场数据是至关重要的。...同时,如果能结合多进程和多线程的优势,在不同的任务上采用不同的并行计算策略,将能更有效地利用计算资源,实现更优的性能表现。
在Python编程中,单线程、多线程和多进程是三种不同的并发执行方式,每种方式都有其独特的特点和适用场景。以下是对这些概念的详细解析: **单线程**: 在单线程编程中,程序的执行是顺序进行的,同一时间只能做一...
在Python编程中,多线程是一种并发执行任务的机制,尤其在处理I/O密集型任务如网络请求时,能够显著提高程序效率。本教程将详细讲解如何使用Python的多线程来实现对多个网址的快速访问,并记录访问结果。 首先,...
经常会遇到下述问题:很多io busy的应用采取多线程的方式来解决,但这时候会发现python命令行不响应ctrl-c 了,而对应的java代码则没有问题: 复制代码 代码如下: public class Test { public static void main...
Python多线程编程文档说明 多进程编程 一、 multiprocessing 模块 1. multiprocessing 模块提供了多进程编程的能力 它的API非常类似于 threading 模块,但是也提供了一些threading 模块不具有的能力 相比于线程,它...
总结起来,`python多线程定时器`的实现涉及到Python的`threading`和`time`模块,通过`Thread`和`Timer`类来创建和管理线程,使用定时器控制线程的启动时间。主程序`main.py`使用这些工具来安排多个任务按设定的间隔...
Python里的多线程是假的多线程,不管有多少核,同一时间只能在一个核中进行...首先说,多进程的进程之间是独立的,然后注意了,python的线程用的是系统的原生线程,python的进程也是用系统的原生进程,那原生进程是由
### Python多进程与多线程知识点详解 #### 一、多进程 ##### 1.... 在Python中,`multiprocessing`模块提供了...以上是关于Python多进程和多线程编程的核心知识点,理解和掌握这些知识点对于编写并发程序是非常重要的。
理解线程和进程的区别,熟练掌握`threading`和`Queue`模块的使用,以及了解如何处理线程安全问题,是成为Python多线程编程专家的基础。通过深入学习和实践,开发者可以充分利用多线程的优势,编写出更加优化的代码。
本主题聚焦于如何使用Python的Selenium与Chrome浏览器进行多开和多线程操作,结合phantomjs和chromedriver这两个关键组件来实现。首先,让我们详细了解一下这些概念。 1. **Selenium**: Selenium是一个强大的Web...
python多线程 python中提供两个标准库thread和threading用于对线程的支持,python3中已放弃对前者的支持,后者是一种更高层次封装的线程库,接下来均以后者为例。 创建线程 python中有两种方式实现线程: 1.实例化...
Python语言多进程与多线程设计探究.pdf
本压缩包“PYthon-multithreading-Test.rar”包含了有关Python多线程测试的源码,旨在帮助用户深入理解和实践Python的线程操作。 Python中的多线程是通过`threading`模块实现的,这个模块提供了基本的线程和同步...
Python多线程编程是一种允许程序同时执行多个线程的技术,以实现程序的并行处理。这通常适用于那些可以分解为多个独立任务的程序,其中各个任务之间能够并发执行,从而提高程序的效率和响应速度。 在操作系统中,...
内容概要:本文详细介绍了Python中的多线程与多进程的概念、特点及具体实现方法。首先概述了Python的基础概念,接着讲解了线程与进程的基本原理及其在实际编程中的应用场景,重点讨论了线程的同步与通信机制(锁、...