python的多线程、多进程代码示例
2024-08-27 18:13:33
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()
最新文章
- iOS网络4——Reachability检测网络状态
- 解决Android studio导入项目卡死
- HDU 3078 (LCA+树链第K大)
- 计算机网络(2)-----ARP协议
- BZOJ1968 [Ahoi2005]COMMON 约数研究
- ASP.NET后台JS弹框使前台页面样式丢失 解决办法
- 【linux命令】grep
- 5分钟实现Android中更换头像功能
- 硬件描述语言Verilog设计经验总结
- JConsole是什么
- Kindle使用技巧
- (蓝牙)网络编程中,使用InputStream read方法读取数据阻塞的解决方法
- FbinstTool(U盘启动盘制作工具) v1.606 免费绿色版
- (3)activiti流程的挂起和激活
- mvc4中的过滤器
- cassandra高级操作之分页的java实现(有项目具体需求)
- OpenCV探索之路(九):模板匹配
- 源码阅读—Iterator接口和LIstIterator接口
- grpc 入门(一)--hello world
- Java多种方式读文件,追加文件内容,等对文件的各种操作
热门文章
- BZOJ4137 &; 洛谷4585:[FJOI2015]火星商店问题
- Linux之初试驱动20160613
- select2 全拼以及首字母
- HDU 3487 Splay tree
- Android如何在初始化的时候获取加载的布局的宽高
- [技巧篇]19.InputStream与String,Byte之间互转[转载]
- HDU 5950Recursive sequence ICPC沈阳站
- jquery checkbox选中状态以及实现全选反选
- go通过名称来调用对应的方法
- ReaderWriterLockSlim 类