python编程(你的电脑能够执行多少线程和进程)
来源:互联网 发布:淘宝宝贝评论保留多久 编辑:程序博客网 时间:2024/05/22 07:01
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
对python比较熟悉的同学,相信都写过多线程和多进程的代码。可是,不知道大家有没有这么一个想法,你的电脑究竟能执行多少线程、多少进程呢?一般来说,每个人的电脑运行的进程不算多,如果大家用的是ubuntu电脑或者mac电脑,可以通过这个命令来查看,
ubuntu> ps aux | wc -l
从我手上的mac电脑看,也就只有190个process左右,那如果我们编写多线程代码呢?看看跑到多少的时候,cpu会卡?下面是多线程代码,
#!/usr/bin/pythonimport osimport sysimport reimport threadingimport signalimport timeg_exit = 0num = 0def sig_process(sig, frame):global g_exitg_exit = 1def sub_process(data):while not g_exit:time.sleep(1)print datadef process():num = int(sys.argv[1])all_thread = []for i in range(num):try:td = threading.Thread(target = sub_process, args=(i,))td.start()except:all_thread.append(-1)continueall_thread.append(td)while not g_exit:time.sleep(100)for i in range(num):if isinstance(all_thread[i], int):continueall_thread[i].join()def main():if len(sys.argv) != 2:print 'wrong number parameter'return 0signal.signal(signal.SIGINT, sig_process)process()if __name__ == '__main__':main()
除此之外,我们再补充一段多进程代码,
#!/usr/bin/pythonimport osimport sysimport reimport threadingimport signalimport timeg_exit = 0num = 0def sig_process(sig, frame):global g_exitg_exit = 1def sub_process(data):while not g_exit:time.sleep(1)print datadef process():num = int(sys.argv[1])all_process = []for i in range(num):try:pid = os.fork()except:pid = -1if pid < 0:print 'error in fork'all_process.append(-1)elif 0 == pid:sub_process(i)os._exit(0)else:all_process.append(pid)while not g_exit:time.sleep(100)for i in range(num):if -1 == all_process[i]:continueos.waitpid(all_process[i], 0)def main():if len(sys.argv) != 2:print 'wrong number parameter'return 0signal.signal(signal.SIGINT, sig_process)process()if __name__ == '__main__':main()
这两个文件中,线程或者进程的数目都是可以配置的。不知道怎么回事,目前我手上这台pro电脑,在3000个线程或者进程的时候,就有点卡了,cpu loading也开始高了。因为子线程或者子进程其实执行的代码很简单,不清楚为什么还是出现这种情况。
阅读全文
0 0
- python编程(你的电脑能够执行多少线程和进程)
- Python编程——线程和进程
- Python的线程和进程
- JVM能够开启多少线程
- 使用python测试你的电脑开启最大线程数
- 多少比特能够杀死你
- 看看下边的问题你能够回答出来多少?
- 看看下边的问题你能够回答出来多少?
- Java并发编程:(1)进程和线程的由来、进程的创建、线程的创建
- python 进程和线程
- python进程和线程
- Python进程和线程
- Python 线程和进程
- python 进程和线程
- Python进程和线程
- 进程和线程 编程
- 进程和线程编程
- 进程和线程编程
- 交叉编译
- 两栏布局学习笔记
- HTTP协议的头信息详解(转载)
- 笔记:关于相对路径与绝对路径中遇到的问题
- Tcp Fast Open测试
- python编程(你的电脑能够执行多少线程和进程)
- cxf客户端调用者参数不合条件响应自定义SOAP提示策略.
- bzoj 4260 Codechef REBXOR(前缀和+01字典树)
- IE浏览器javascript调试
- 区块链初识
- 分割问题
- Datagrid 加载后台数据的方式
- 美团点评SQL优化工具SQLAdvisor开源
- 博客迁移到GitHub欢迎访问