diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ce56ac3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +vthread.egg-info/ +__pycache__/ +dist/ +build/ \ No newline at end of file diff --git a/README.md b/README.md index 5ed88a5..b9c0f08 100644 --- a/README.md +++ b/README.md @@ -127,8 +127,7 @@ def foolfunc_(): # 注意!关于多个函数装饰器,线程池数量的定义 # # # #==============================================# - -# eg.1 +# -------------------- eg.1 -------------------- @vthread.pool(10) def foolfunc1(): pass @@ -137,8 +136,7 @@ def foolfunc1(): pass # 这样就意味着gqueue=0的线程池数量为18 - -# eg.2 +# -------------------- eg.2 -------------------- @vthread.pool(10) def foolfunc1(): pass @@ -147,8 +145,7 @@ def foolfunc1(): pass # 这样就意味着gqueue=0的线程池数量为10 - -# eg.3 +# -------------------- eg.3 -------------------- @vthread.pool() def foolfunc1(): pass @@ -157,12 +154,21 @@ def foolfunc1(): pass 这样就意味着gqueue=0的线程池数量为默认的cpu核心数 - -# eg.4 +# -------------------- eg.4 -------------------- pool1 = vthread.pool(gqueue=1) pool2 = vthread.pool(6,gqueue=2) pool2 = vthread.pool(8,gqueue=2) +@pool1 +def foolfunc1(): + pass +@pool2 +def foolfunc1(): + pass # 这样就意味着gqueue=1的线程池数量为默认的cpu核心数,gqueue=2的线程池数量为8 +#==============================================# +# 为了避免这种定义时可能出现的问题。 +# 建议在多个函数需要使用线程池的情况下,最好使用 eg.4 中的处理方式: +# 1 先生成装饰器对象 2 然后再装饰需要进入多线程的函数 ``` - ##### 普通的多线程 @@ -205,7 +211,7 @@ for i in range(5): # vthread.thread(1) 带参数的可以装饰多个函数,但是已经有了分组线程池的强大功能,为什么还要这样浪费资源呢? ``` -- ### 百度爬虫 +- ## 百度爬虫,线程池示例脚本 简单使用该库写一个简单的多线程 “请求”和 “写入文件”并行处理的百度爬虫作为使用范例。这里的代码仍然是注释装饰器则为正常单线程,添加装饰器则自动变成多线程池处理。 ```python import vthread