python 线程,进程28原则
基于函数实现
from threading import Thread def fun(data, *args, **kwargs):
""" :param data:
:param args:
:param kwargs:
:return:
"""
print('start %s'%data) if __name__ == "__main__":
tups = ((1,),(2,),(3,))
for i in tups:
kwargs = {
"target": fun,
'args':i
}
t = Thread(**kwargs)
t.start()
基于类实现
from threading import Thread
from multiprocessing import Process class MyThread(Thread):
def __init__(self, func,*args):
super(MyThread,self).__init__()
self.func = func
self.args = args def run(self):
self.func(*self.args) class MyProcess(Process):
def __init__(self, func,*args):
super(MyProcess, self).__init__()
self.func = func
self.args = args def run(self):
self.func(*self.args)
传入类的入口函数,即可实现多线程
baidu = Baidu()
sogou = Sogou()
google = Google() baiduThread = MyThread(baidu.run,1,100)
sogouThread = MyThread(sogou.run,1,100)
googleThread = MyThread(google.run,1,100)
# 线程开启
baiduThread.start()
sogouThread.start()
googleThread.start()
# 主线程等待子线程
baiduThread.join()
sogouThread.join()
googleThread.join()
总结一波,实际实现多进程的进程是类的实例化对象的run函数(baidu.run),因此在初始化类时是串行的,而很多模块并不能在同一进程中实例化多个对象。
例如:
class MyClass:
def __init__(self):
logging.basicConfig(filename='yaomaitong.log', filemode="w", level=logging.INFO) # 典型的反例 def run(self,*args):
# 所有需要多进程的程序都该写在这里
self.start()
self.continue()
self.end()
pass def start(self):
pass
...
线程池、进程池:
from concurrent.futures import ThreadPoolExecutor
from concurrent.futures import ProcessPoolExecutor import requests urls_list = [
'https://www.baidu.com',
'http://www.gaosiedu.com',
'https://www.jd.com',
'https://www.taobao.com',
'https://news.baidu.com',
]
pool = ThreadPoolExecutor(3) def request(url):
response = requests.get(url)
return response def read_data(future,*args,**kwargs):
response = future.result()
response.encoding = 'utf-8'
print(response.status_code,response.url) def main():
for url in urls_list:
done = pool.submit(request,url)
done.add_done_callback(read_data) if __name__ == '__main__':
main()
pool.shutdown(wait=True)
python 线程,进程28原则的更多相关文章
- python线程进程
多道技术: 多道程序设计技术 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行.即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬.软件资源.当一道程序因I/O请 ...
- python 线程 进程
1.进程与线程优.缺点的比较总言:使用进程和线程的目的,提高执行效率. 进程: 优点:能利用机器的多核性能,同时进行多个操作. 缺点:需要耗费资源,重新开辟内存空间,耗内存. 线程: 优点:共享内存( ...
- python 线程 进程 协程 学习
转载自大神博客:http://www.cnblogs.com/aylin/p/5601969.html 仅供学习使用···· python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和 ...
- Python 线程&进程与协程
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- python 线程进程
一 线程的2种调用方式 直接调用 实例1: import threading import time def sayhi(num): #定义每个线程要运行的函数 print("runni ...
- python线程,进程,队列和缓存
一.线程 threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 创建线程的两种方式1.threading.Thread import threading def f1(arg): ...
- python 线程/进程模块
线程的基本使用: import threading # ###################### 1.线程的基本使用 def func(arg): print(arg) t = threading ...
- python 线程 进程 标识
s = '%s%s%s%s%s%s%s%s' % ( time.strftime('%Y%m%d %H:%M:%S', time.localtime(time.time())), ' os.getpp ...
- python 线程(一)理论部分
Python线程 进程有很多优点,它提供了多道编程,可以提高计算机CPU的利用率.既然进程这么优秀,为什么还要线程呢?其实,仔细观察就会发现进程还是有很多缺陷的. 主要体现在一下几个方面: 进程只能在 ...
随机推荐
- Object-Oriented(一)创建对象
自用备忘笔记 前言 虽然可以使用 Object 和对象字面量创建对象,但是如果要创建大量相似的对象又显得麻烦.为解决这个问题,人们开始使用工厂模式的变种. 工厂模式 function person(n ...
- Bash Shebang 小结
在 shell(Bash 是一种 shell) 中执行外部程序和脚本时,Linux 内核会启动一个新的进程,以便在新的进程中执行指定的程序或脚本.内核知道该如何为编译型的程序做这件事,但是对于脚本程序 ...
- 我的AutoHotkey脚本
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; En ...
- list 的 增 删
增: 1. name = [] 2. name.append() 3. name.extend(name2) name2为可迭代的 name + name2 与之效果一样,合并为一个列表 4. nam ...
- Linux课题实践四——ELF文件格式分析
2.4 ELF文件格式分析 20135318 刘浩晨 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目 ...
- Chrome查看HTTP
查找cookie 补充: 接口调试使用postman挺不错的.以前每次都自己写一个ajax来进行接收调试. 如:用post发送json数据给接口,得到json数据. 工具有时候能让效率大大提升,要学会 ...
- Ubuntu设置静态IP的方法
通过修改配置文件/etc/network/interfaces,如果/etc/resolv.conf中提示nameserver会被resolvconf修改,是临时文件,那么dns server也可以在 ...
- C#微信扫码支付Demo
1.打开微信支付开发平台: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1 2.下载SDK Demo: C#版下载
- CENTOS7修改ip
编辑网卡设置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 编辑内容 vi /etc/sysconfig/network-scripts/ificg-en ...
- HMM模型学习笔记(前向算法实例)
HMM算法想必大家已经听说了好多次了,完全看公式一头雾水.但是HMM的基本理论其实很简单.因为HMM是马尔科夫链中的一种,只是它的状态不能直接被观察到,但是可以通过观察向量间接的反映出来,即每一个观察 ...