Python与SEO

Python与SEO 扫二维码继续学习

从小白到上手,讲讲如何用python来辅助seo工作
(12人)

1200.00元

该课程为限制课程
请联系客服

读取文件

 

 cmd

 

 

[展开全文]

LINUX常见命令

cd / 进入根目录

cd .. 返回上一级目录

cd 返回用户的主目录

cd home/ 进入home目录

pwd 查看当前的路径

mkdir 创建一个文件夹

vim sd 创建一个叫做sd的文件

cat sd 打开sd文件

rm sd 删除掉sd文件 

ls 查看当前目录下的文件和文件夹

ls -l 查看详细内容参数(文件和文件夹的)

xshell 蓝色的一般都是目录

cp sd sdd 把sd内容复制到sdd文件

cat sd > sdc 把sd文件复制到sdc

shell命令

cd sdwd/

cat keyword | head -199

cat keyword |wc -l 统计

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

链接另一台主机:ssh root@123.56.248.187

敲回车然后输入密码

1.查看keyword文件前50行内容:

cat keyword |head -50

2.查看keyword文件有多少行:

cat keyword |wc -l

3.打印keyword文件第一行的前十个关键字。

cat keyword |awk '{print $1}' |head -10

4.打印keyword文件最后一行的前十个。

cat keyword |awk '{print $NF}'|head -10

5.打印搜索量大于100的词:

$0代表输出整行

awk默认是以空格为分隔

cat keyword |awk '{if($2>100)print $0}'|head -100

6.统计第二列的总和

cat keyword | awk '{sum+=$2}END{print sum}'

7.把空格的分隔符变为逗号

cat keyword |perl -p -e 's/ /,/g' |head -10

8.让awk以逗号为分隔

cat keyword|awk -F"," '{print $1}'|head -10

 

 

**************************************

grep可以以匹配正则的方式打印出来搜索到的文本

1.打印出以招聘会结尾的词

cat keyword|awk '{print $1}'|grep '招聘会$'|head -10

2. 排除以招聘会结尾的词

'-v'表示不包含

‘-o’表示只打印匹配部分的文本

$在正则中表示以XX结尾

cat keyword|awk '{print $1}'|grep -v '招聘会$'|head -10

 

***************************************

sort命令,对文本进行排序

k表示针对第几列进行排序

n表示按数字进行排序,默认按升序进行排序

r表示按降序排列

1.将文件内容第二行按照数字大小进行降序排列

cat keyword|sort -k2nr|head -100

 

**************************

uniq 对文本进行去重,只能对相邻重复的进行去重,不相邻的没用,所以在使用uniq之前,需要用sort首先进行排序

'-c'表示打印重复次数

1.查看keyword文件有哪些分组:

cat keyword|awk '{print $NF}'|sort|uniq -c|head -100

2.查看用户搜索招聘的用户行为,用户对招聘会怎样搜索

cat keyword|awk '{print $1}'|grep -o '招聘.*'|sort|uniq -c|sort -nr|head -100

3.看招聘会总搜索量多少

cat keyword|awk '{print $1,$2}'|grep '招聘会 ' |awk '{sum+=$2}END{print sum}'

**********日志分析********************

1.打印百度蜘蛛抓取的行

cat log |grep 'Baiduspider/2.0'|head -10

2.看百度蜘蛛今天抓了多少次

cat log |grep 'Baiduspider/2.0'|wc -l

3.看百度蜘蛛抓取url的状态码

cat log |grep 'Baiduspider/2.0'|awk '{print $9}'|sort|uniq -c|sort -nr

4.查看抓取url的类型

(1).把数字替换成自定义的符号('ID'):

cat log |grep 'Baiduspider/2.0'|awk '{print $7}'|perl -p -e 's/\d+/ID/g'|head -100

(2).进行排序,去重计数,可以看百度对哪一类url抓的比较多。做内链调整的时候可用到这些数据。

cat log |grep 'Baiduspider/2.0'|awk '{print $7}'|perl -p -e's/\d+/ID/g'|sort|uniq -c|sort -nr|head -100

5.看从自然搜索引擎过来的流量

cat log |egrep 'www.baidu.com/.*(wd|word)='|head -30

6.看哪些页面产生的来自百度的流量最多

cat log |egrep 'www.baidu.com/.*(wd|word)='|awk '{print $7}'|sort|uniq -c|sort -nr|head -100

7.生成sitemap的代码

#coding:utf-8

import sys.time

input_file = sys.argv[1]

date = time.strftime('%Y-%m-%d',time.localtime(time.time()))

print '<?xml version="1.0" encoding="utf-8"*?>'

print '<urlset>'

for line in open(input_file):

                 url = line.strip()

                 print '          <url>'

                 print '                <loc>%s</loc>' %url

                 print '           <lastmod>%s</lastmod>'  % date

                  print '<priority>0.8</priority>'

print '</urlset>'

 

 

8.把log里面的所有url提取出来,导入url文件

cat log|awk '{print $7}' > url

9.把url文件每5w分隔为一个文件:

split -50000 url ceshi_

10.生成xml的格式:

python sitemap_pc.py ceshi_aa|head -10

 

代码用这个也好:

cat sitemap.txt|awk 'BEGIN{print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset>"}{print "<url>\n<loc>"$0"</loc>\n<lastmod>2014-07-18</lastmod>\n<changefreq>always</changefreq>\n</url>"}END{print "</urlset>"}'

 

[展开全文]

经过readlines读取后打印出来的是一个列表

************关于csv文件**********************

csv文件都是以逗号为分隔的。

1.csv文件的读取代码:

import csv

csvfile = file('file.csv','rb')

reader = csv.reader(csvfile)

for line in reader:

          print line

csvfile.close()

2.向csv文件追加内容

import csv

svfile = file('file.csv','ab')

writer = csv.writer(csvfile)

data = []

data.append('seo')

data.append('seo')

data.append('seo')

#writer.writerow(['name','age','iphone'])

#第一种添加方式

writer.writerow(['name','age','iphone'])

#第二种添加方式

csvfile.close()

 

[展开全文]

if条件语句

#打印包含‘招聘会’且搜索量大于100的关键词

#coding:utf-8

for line in open('keyword'):

      line = line.strip() # 去掉每行结尾的空格和换行符

      word = line.split(' ')[0]

      search = line.split(' ')[1]

 

if ‘招聘会’ in word and int(search)>100:

       print word,search

''''''''''''''''''''''while 循环''''''''''''''''''''''''

1.分析用户搜索招聘相关的行为,会打印出搜索量和关键字

cat keywork|awk '{print $1}'|grep -o '招聘.*'|sort|uniq -c|sort -nr|head -100

2.用python实行(shell是占内存的,所有数据得先写到内存才能执行,python比较省资源)

 

 

[展开全文]

一、字符串连接的两种方法:

1.

a = ["a",'b','c','d']

b = ''

b = ','.join(a)

>>>print b

>>>a,b,c,d

2.

a = ["a",'b','c','d']

b = ''

b = '%s,%s,%s,%s'%tuple(a)

>>>print b 

>>>a,b,c,d

二、字符串替换的两种方式

1.

a = 'hellow ,world'

b = a.replace('world','python')

>>>print b

>>>hellow python

2.

import re

a = 'hellow ,world'

b = re.sub('world','python',a)

>>>print b

>>>hellow python

三、字符串查找

a = 'itseo'

>>>print a.find('s')

>>>2 

四、字符串切割

a = '北京招聘,231321,321321,城市招聘'

b= a.split(',')

>>>print b[0]

>>>北京招聘

注意:utf8中,一个中文对应3个字节。

gbk中, 一个中文对应2个字节。

unicode 一个中文对应1个字节

查看汉字长度:

a = '百度招聘'

>>>print len(a)

>>>12

>>>print len(a.decode('utf-8'))

>>>4

五、字符串拼接

1

a = 'itseo'

b = '%s niubi' % a

>>>print b 

>>>itseo niubi

2

a = 'itseo'

b = '{jigou} niubi'.format{jigou=a}

>>>print b 

>>>itseo niubi

六、去掉空格和换行

a = '''               fafdafafafds

'''

#删掉字符串左右两边的空格和换行,中间去空格可用replace或sub进行替换。

>>>print a.strip()

>>>fafdafafafds

七、两个列表合并到一块

a.extend(b)

append的对象为字符串,extend的对象为列表。

八、按照原有顺序进行去重。

a = [9,91,5,3,3,3,9,34,54,33,33]

b = sorted(set(a),key=a.index)

>>>print  b

>>>[9,1,5,3,54,33]

 

a.clear()清空字典a。

a.has_key('word')字典a中是否包含word。

a.keys()查看字典a中所有的键。

a.values()查看字典a中所有的值。

a.items()查看字典a中所有的键值。

 

##字典排序

a = {'seo':2312121,'itseo':90989,'百度seo':2313}

b = sorted(a.items(),key=lambda a:a[1],reverse=True)字典按值降序排列。

 

##按百分比呈现,保留两位小数

a = 123

b = 1000

>>>print (format(float(a)/float(b),'2%'))

>>>12%

 

[展开全文]

字典格式和json格式是差不多的。

表达式:是指“某事”;

语句:‘做某事’。

常见语句:if/for/while/try/def/class/import..

#coding:utf-8

for line in open('keyword'):

       print line.strip()

for line in open('keyword'):

      if '公司' in line:

                print  line

while True:

      print   1

 

函数:1.自定义函数

def test1():

      a=1

      b=2

      num = a+b

      return num

print test1()

 

在console里面输入document.charset查看网页编码格式

[展开全文]

读取文件的方法 

f = open('file').readline()读取文件file中的第一行,以字符串的形式返回。

f = open('file').readlines()读取文件file中的每一行,以列表的形式返回

r只读方式打开

w只写方式打开

a 追加方式打开

r+/w+读写的方式打开

a+追加读写方式打开

b:已进制方式打开

 

[展开全文]
kuankuan · 2017-06-19 · 文件操作 0

数据类型

字符串的链接 有两种方法

jion(a) 

tuple(a)

提取 a【*】

替换b = a.replace('word','python')

利用正则模块

import re
>>> b = re.sub('word','python',a)

字符串相加

a + b

查找位置 find

切割 split

中文字的长度 print len(a.decode('utf-8'))

字符串拼接

去掉空格与换行

 a.strip() 只能删除最前面或者最后面的空格,中间的没有办法去掉

中间的只能通过替换的方式来换掉print a.replace(' ','')

或者正则的方法

 print re.sub(' ','',a)

删除列表中最后一位索引。a.pop()并返回最后的一位索引

列表查找

查找索引的位置

列表排序

a.sort()升序

a.sort(reverse = True)降序

去重 b = sorted(set(a),key=a.index)分词

字符串转换成列表 print a.spilt(',')

元祖中的值是无法修改的

 

元祖是一个元素 列表是一堆元素的集合

字典可以是任意数据类型,并且可以嵌套很多层

集合中不存在重复,并且没有顺序一般在去重中应用

 

[展开全文]
kuankuan · 2017-06-03 · 数据类型 0

常用代码片段

python入门书籍

笨方法学python

python

交互式解释器  cpython/pyhon/PyPy

算法 重视逻辑

数据类型

将计算的数据存在内存中,存储的数据可以分为很多种,常用的 字符串(str)、布尔(bool)、数字(整数、浮点数)、列表(list)、元祖(tuple)、字典(dict)、

集合(set)

str =‘123456’

str = “adnvb”

bool = True/False

int = 123456

float = 1324.1

list = [1,2,3, 'abcd'[1.2.3.'abcd']]有顺序之分

tuple =(‘abdc’,‘python’1234) 无顺序之分

字典类似网站的jacy格式

dict = {‘name':"GoGo"}

GoGo 是键name的值

dict = {‘name':"GoGo",'age': '24'}

表达式 2+3 某事  语句 打印 2+3 做某事

常见语句

if/for/while/def/class/import

函数

1 自定义函数、内置函数 匿名函数

[展开全文]
  •  
[展开全文]
cheng · 2016-10-25 · 多线程 0

>>> a = ['百度','seo',231321]
>>> for line in a:
... print line
  File "<stdin>", line 2
    print line
        ^
IndentationError: expected an indented block

 

[展开全文]
hongbao · 2016-05-15 · 数据类型 0

在进行python-mysql装载时`mysql_config not found`这个错误出现,要如何解决?
- 出现这种错误的时候,要分析一下,如果是常规的装载,则也许是缺少几个组件,此时只需要加载上去即可
    - sudo updatedb
    - locate mysql config
    - `mysql_config`的位置为:`/usr/bin/mysql_config`在mysql-python源码包下找到:`setup_posix.py` 文件,然后找到文件中的`mysql_config.path` 将其值改为:`/usr/bin/mysql_config`,然后 sudo python setup.py install ,就可以了
- 如果是lnmp一键装载的,则只需要一条命令就可以解决:
    - `ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config`
    - 此命令是将在/usr/local/mysql/bin/里面的文件连接到了/usr/local/bin目录下
    - 此时再次运行pip install python-mysql就不会再报错了。

[展开全文]
CKing · 2016-03-27 · python操作mysql 1

1,日志中包含百度蜘蛛的内容

car 文件名 |gerp 'baiduspider/2.0’|head -30

2,想看蜘蛛捉取多少次

car 文件名 |gerp 'baiduspider/2.0’|head -l 

3,状态码

car 文件名 |gerp 'baiduspider/2.0’|awk '{print $9}'|head -次数

 

car 文件名 |gerp 'baiduspider/2.0’|awk '{print $9}'|sort|unoq -c|sort -nr

4,URL类型

cat 文件名 |gerp 'baiduspider/2.0’|awk '{print $9}'|perl -p -e 's/\d+/ID/g'

 

[展开全文]

vim index.py

 

#coding:utf-8

1、

def sum():

c = 1 + 1

return c

print sum():

 

2、

def sum():

pass

 

3、

def sum():

a = 1

b = 2

c = 3

return a,b,c

A = sum()

print A

 

[展开全文]
浅唱 · 2016-03-02 · 函数 0

函数内部也可以定义全局变量

global data

文档字符串

def sum(a,b):

 'nihao'

 data = a + b

 return data

print sum(1,2)

print sum.__doc__

 

3条件语句返回 return 不要忘记

4、匿名函数

lambda {参数}:{表达式}

a = lambda a,b:a+b

[展开全文]
将军哥 · 2016-03-01 · 函数 0

#coding:utf-8

# 单线程 执行时间6秒
# from time import sleep,ctime

# def loop0():
#     print 'loop0开始时间为: %s' % ctime()
#     sleep(4)
#     print 'loop0结束时间为: %s' % ctime()
# def loop1():
#     print 'loop1开始时间为: %s' % ctime()
#     sleep(2)
#     print 'loop1结束时间为: %s' % ctime()
# def main():
#     print '开始时间为: %s' % ctime()
#     loop0()
#     loop1()
#     print '结束时间为: %s' % ctime()

# if __name__ == '__main__':
#     main()

# 多线程
# 多线程模块:thread threading Queue

# thread
# import thread
# from time import sleep,ctime

# def loop0():
#     print 'loop0开始时间为: %s' % ctime()
#     sleep(4)
#     print 'loop0结束时间为: %s' % ctime()
# def loop1():
#     print 'loop1开始时间为: %s' % ctime()
#     sleep(2)
#     print 'loop1结束时间为: %s' % ctime()
# def main():
#     print '开始时间为: %s' % ctime() # 主线程
#     thread.start_new_thread(loop0,())# 子线程
#     thread.start_new_thread(loop1,())# 子线程
#     sleep(6)                         # 主线程
#     print '结束时间为: %s' % ctime() # 主线程

# if __name__ == '__main__':
#     main()

# 锁
# import thread
# from time import sleep,ctime

# # 等待时间的变量写到loops这个列表中
# loops = [4,2,10]
# # 传入三个参数:多线程的循环号、暂停时间、锁
# def loop(nloop,nsec,lock):
#     print 'Start loop ',nloop ,'time: %s' % ctime() 
#     sleep(nsec)
#     print 'End loop ',nloop ,'time: %s' % ctime()
#     lock.release()

# def main():
#     print '开始时间: %s ' % ctime()
#     locks = []
#     nloops = range(len(loops))    # 获得线程数量

#     for i in nloops:
#         lock = thread.allocate_lock() # 给线程创建一个锁
#         lock.acquire()                  # 获得这个锁
#         locks.append(lock)             # 把每个线程放到locks列表中
#     for i in nloops:
#         # 创建新的子线程,分别传入“循环号、暂停时间、锁”
#         thread.start_new_thread(loop,(i,loops[i],locks[i]))
#     for i in nloops:
#         # 每执行一个线程,释放一个锁
#         while locks[i].locked():
#             pass
#     print '结束时间:%s' % ctime()
# if __name__ == '__main__':
#      main()

# threading
# import threading
# from time import ctime,sleep

# loops = [4,2]
# # 传入2个参数:多线程的循环号、暂停时间
# def loop(nloop,nsec):
#     print 'Start loop',nloop,'time: %s' % ctime() 
#     sleep(nsec)
#     print 'End loop',nloop,'time: %s' % ctime()
# def main():
#     print '开始时间: %s ' % ctime()
#     threads = []
#     nloops = range(len(loops))    # 获得线程数量
    
#     for i in nloops:
#         # 循环创建新线程,传入:子线程循环号和暂停时间
#         t = threading.Thread(target=loop,args=(i,loops[i]))
#         # 将先创建的子线程加入线程2列表
#         threads.append(t)
        
#     for i in nloops: # 循环执行线程 
#         threads[i].start()
#     for i in nloops: # 将子线程挂起,直到线程2运行结束后释放
#         threads[i].join()
#     print '结束时间:%s' % ctime()
# if __name__ == '__main__':
#      main()

# 1、单线程爬虫
# import urllib2,re

# def getHtml(url):
#     headers = {
#     "Accept":"*/*",
#     #"Accept-Encoding":"gzip, deflate, sdch",
#     "Accept-Language":"zh,zh-CN;q=0.8",
#     "Cache-Control":"no-cache",
#     "Connection":"keep-alive",
#     "Cookie":"BIDUPSID=8718E1C94027172B5893FA1827883836; PSTM=1453297921; BAIDUID=E49F847BA4CA862C221448E3E1172FBD:FG=1; BDUSS=M1eXdKbG1OLWt5S0JRT3FZS24tcGtXNXVxRTJ5UmpGVGdEYmlzaGMtazNQTmxXQVFBQUFBJCQAAAAAAAAAAAEAAADziD0Q48a9qMHpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADevsVY3r7FWdn; BDSFRCVID=0c4sJeC62GBSu1v4vHjwhB-WL2K-nl7TH6aItjtHtzGcOdJWlbiTEG0PfOlQpYD-en-CogKKy2OTH9jP; H_BDCLCKID_SF=Jb4q_K--tIv0jbTg-tP_-4_tbh_X5-RLfKttoPOF5lONHq3u-nrEXT0BbJ50K4TH56kHahkM5h7xOKQoQR8KjP0IqHQIbxKOQeQK5h37BDJmfh710J3ZQKr0eH3x2-biWbRM2MbdJD5mbC0Cj585jTjM5pJfeJ3KaKn0WJ08Kbu3MDosKU6qLT5Xj4vd-J5XJTc7BJ7S0j6R8KooMJ56Xp0njxQAL-Q--5b33Mt53pc1bqQ-3UonDh8p5xvIbpcRHmj9BUcO5hvvJDoO3MABMlOhDG_Dt6F8fR3fL-0hHJnhHtcdbtTJ-P_t5p_X5-RLfbR2_POF5l8-hl3t0n_a560ByM6faUDLQ2tHa568aI3xOKQpyJO85Mk324J2W-3ZQKJaBxbN3KJmel710J3ZQKu8hmcm2-biW5KH2MbdfRcmbRO4-TFhD6QyDMK; BDRCVFR[rePVrIVEn7n]=9xWipS8B-FspA7EnHc1QhPEUf; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; H_PS_PSSID=1432_19033_17001_17073_15896_11525",
#     "Host":"sp0.baidu.com",
#     "Pragma":"no-cache",
#     "Referer":"https://www.baidu.com/",
#     "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36",
#     }
#     req = urllib2.Request(url = url,headers = headers)
#     html = urllib2.urlopen(req).read()
#     return html
# def search(req,html):
#     text = re.search(req,html)
#     if text:
#         data = text.group(1)
#     else:
#         data = "no"
#     return data

# for i in range(1,1000):
#     url = 'http://www.baidu.com/s?wd=%s' % i
#     html = getHtml(url)
#     title = search(r'<title>(.*?)</title>',html)
#     print i,title


# 2、多线程爬虫
import urllib2,re,threading
def getHtml(url):
    headers = {
    "Accept":"*/*",
    #"Accept-Encoding":"gzip, deflate, sdch",
    "Accept-Language":"zh,zh-CN;q=0.8",
    "Cache-Control":"no-cache",
    "Connection":"keep-alive",
    "Cookie":"BIDUPSID=8718E1C94027172B5893FA1827883836; PSTM=1453297921; BAIDUID=E49F847BA4CA862C221448E3E1172FBD:FG=1; BDUSS=M1eXdKbG1OLWt5S0JRT3FZS24tcGtXNXVxRTJ5UmpGVGdEYmlzaGMtazNQTmxXQVFBQUFBJCQAAAAAAAAAAAEAAADziD0Q48a9qMHpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADevsVY3r7FWdn; BDSFRCVID=0c4sJeC62GBSu1v4vHjwhB-WL2K-nl7TH6aItjtHtzGcOdJWlbiTEG0PfOlQpYD-en-CogKKy2OTH9jP; H_BDCLCKID_SF=Jb4q_K--tIv0jbTg-tP_-4_tbh_X5-RLfKttoPOF5lONHq3u-nrEXT0BbJ50K4TH56kHahkM5h7xOKQoQR8KjP0IqHQIbxKOQeQK5h37BDJmfh710J3ZQKr0eH3x2-biWbRM2MbdJD5mbC0Cj585jTjM5pJfeJ3KaKn0WJ08Kbu3MDosKU6qLT5Xj4vd-J5XJTc7BJ7S0j6R8KooMJ56Xp0njxQAL-Q--5b33Mt53pc1bqQ-3UonDh8p5xvIbpcRHmj9BUcO5hvvJDoO3MABMlOhDG_Dt6F8fR3fL-0hHJnhHtcdbtTJ-P_t5p_X5-RLfbR2_POF5l8-hl3t0n_a560ByM6faUDLQ2tHa568aI3xOKQpyJO85Mk324J2W-3ZQKJaBxbN3KJmel710J3ZQKu8hmcm2-biW5KH2MbdfRcmbRO4-TFhD6QyDMK; BDRCVFR[rePVrIVEn7n]=9xWipS8B-FspA7EnHc1QhPEUf; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; H_PS_PSSID=1432_19033_17001_17073_15896_11525",
    "Host":"sp0.baidu.com",
    "Pragma":"no-cache",
    "Referer":"https://www.baidu.com/",
    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36",
    }
    req = urllib2.Request(url = url,headers = headers)
    html = urllib2.urlopen(req).read()
    return html

def search(req,html):
    text = re.search(req,html)
    if text:
        data = text.group(1)
    else:
        data = "no"
    return data

def getinfo(num):
    url = 'http://www.baidu.com/s?wd=%s' % num
    html = getHtml(url)
    title = search(r'<title>(.*?)</title>',html)

    # 创建锁(互斥锁)保证同意时间只有一个线程在输出
    mutex.acquire()    #创建锁
    print num,title
    mutex.release()    #释放锁

def getRange(l,r):
    for i in range(l,r):
        getinfo(i)

num_start = 1
num_end = 1000
totleThread = 3
gap = (num_end - num_start) / totleThread

mutex = threading.Lock()    #threading.Lock()方法添加互斥锁
for i in range(num_start,num_end):
    t = threading.Thread(target=getRange,args=(i,i+gap))
    t.start()

[展开全文]
dajianli · 2016-02-29 · 多线程 0

授课教师

ITSEO讲师

学员动态