python的多线程、多进程代码示例
python多进程和多线程的区别:
python的多线程不是真正意义上的多线程,由于python编译器的问题,导致python的多线程存在一个PIL锁,使得python的多线程的CPU利用率比预期的要低很多
python的多进程(java的应该也是)有内存拷贝的问题,所以建议用java或者c的多线程。
多线程有两种方式:thread和threading
这里应用的场景是map数据分多线程、进度写入codis的示例
这是thread的示例:thread的主进程不会等待线程
import thread,math,threading,multiprocessing,os,time
def writeToCodis(prefix,key_list,result_map):
# client = BfdCodis("xxx", )
begin = int(time.time())
for key in key_list:
print key
# client.set(prefix + key, result_map[key])
# client.expire(prefix + key, 1 * 24 * 3600)
end = int(time.time())
# 分配key
gidToSid={1:2,3:4}
total_key = len(gidToSid)
gap = int(math.ceil(float(total_key)/process_num))
keys = gidToSid.keys()
for i in range(0,process_num):
thread.start_new_thread(writeToCodis,(G2S_prefix,keys[i*gap:(i+1)*gap],gidToSid))
# t.start()
time.sleep(10)
threading 会等待线程的执行
for i in range(0,process_num):
t=threading.Thread(target=writeToCodis,args=(G2S_prefix,keys[i*gap:(i+1)*gap],gidToSid))
t.start()
这是多进程的示例
for i in range(0,process_num):
p = multiprocessing.Process(target=writeToCodis,args=(G2S_prefix,keys[i*gap:(i+1)*gap],gidToSid))
p.start()
python的多线程、多进程代码示例的更多相关文章
- python爬虫之多线程、多进程+代码示例
python爬虫之多线程.多进程 使用多进程.多线程编写爬虫的代码能有效的提高爬虫爬取目标网站的效率. 一.什么是进程和线程 引用廖雪峰的官方网站关于进程和线程的讲解: 进程:对于操作系统来说,一个任 ...
- python进阶--多线程多进程
一.线程和进程 进程是拥有独立内存,能够独立运行的最小单位,也是程序执行的最小单位,线程是程序运行过程中,一个单一的顺序控制流程,是程序执行流的最小单位,一个进程至少包含一个线程,多线程共享进程的内存 ...
- 静听网+python爬虫+多线程+多进程+构建IP代理池
目标网站:静听网 网站url:http://www.audio699.com/ 目标文件:所有在线听的音频文件 附:我有个喜好就是听有声书,然而很多软件都是付费才能听,免费在线网站虽然能听,但是禁ip ...
- python 爬虫 多线程 多进程
一.程序.进程和线程的理解 程序:就相当于一个应用(app),例如电脑上打开的一个程序. 进程:程序运行资源(内存资源)分配的最小单位,一个程序可以有多个进程. 线程:cpu最小的调度单位,必须依赖 ...
- Python之多线程多进程
(一)进程 1.定义 进程:就是一组资源的集合.一个程序就是一个进程. 线程是用来干活的,只有进程的话是没办法运行的,进程里其实是线程在具体干活的. import threading import t ...
- Python操作JSON数据代码示例
#!/usr/bin/env python import json import os def json_test(): return_dic = {} json_data = { 'appid':' ...
- 用Python画一个八角形代码示例
import turtle turtle.color("purple","yellow") turtle.speed(1) turtle.fd(100) t ...
- python的多线程、多进程、协程用代码详解
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:刘早起早起 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
- 学习笔记--python中使用多进程、多线程加速文本预处理
一.任务描述 最近尝试自行构建skip-gram模型训练word2vec词向量表.其中有一步需要统计各词汇的出现频率,截取出现频率最高的10000个词汇进行保留,形成常用词词典.对于这个问题,我建立了 ...
随机推荐
- 【树形DP】【UVA10859】 Placing Lampposts
传送门 Description 给定一个\(n\)个点\(m\)条边的无向无环图,选择尽量少的节点,使得所有边都至少有一个顶点被选择.在这个基础上,要求有两个顶点被选择的边数尽可能大 Input 多组 ...
- JavaScript定义类与对象的一些方法
最近偶然碰到有朋友问我"hoisting"的问题.即在js里所有变量的声明都是置顶的,而赋值则是在之后发生的.可以看看这个例子: 1 var a = 'global'; 2 (fu ...
- hdu 5625
Clarke and chemistry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- AIDL 简单实现
实现步骤1.建立一个aidl文件,在里面定义好接口,注意里面不能写public修饰符,同接口一样,包名要一致. package com.systemset.aidl; interface ILight ...
- Android数据存储与访问
1.文件 1)保存到手要内存,文件保存到/data/data对应的应用程序包下面 如 FILE_PATH = "/data/data/com.diysoul.filedem ...
- 题解 【luogu P2680 NOIp提高组2015 运输计划】
题目链接 题解 题意 一棵树上有\(m\)条路径,可以将其中一条边的权值改为0,问最长的路径最短是多少 分析 最短的路径最长自然想到二分最长路径,设其为\(dis\) 关键在于如何check chec ...
- Spring structs2 hibernate 整合(ssh)
ssh项目jar包 项目内容: 1. 加入 Spring 1). 加入 jar 包2). 配置 web.xml 文件3). 加入 Spring 的配置文件.(application.xml) 2. 加 ...
- mysql 添加字段 修改字段为not null
添加一个字段 ALTER TABLE jw_user_role ADD zk_env VARCHAR(16); 修改字段为not null,还要把原来的类型也写出来 ALTER TABLE jw_us ...
- MyBatis框架的使用及源码分析(十) CacheExecutor,SimpleExecutor,BatchExecutor ,ReuseExecutor
Executor分成两大类,一类是CacheExecutor,另一类是普通Executor. 普通类又分为: ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情.它为每个语句的执行 ...
- 【BZOJ】3626 [LNOI2014]LCA
[算法]树链剖分+线段树(区间加值,区间求和) [题解]http://hzwer.com/3891.html 中间不要取模不然相减会出错. 血的教训:线段树修改时标记下传+上传,查询时下传.如果修改时 ...