python3.x - python3.5怎样控制线程的数量呢?
ringa_lee
ringa_lee 2017-04-17 17:57:54
[Python讨论组]

thread_list = []
for kw_do in exc_kw():

thread_list.append(Thread(target=zz_kw,args=(kw_do,)))

for thread in thread_list:

thread.start()

for thread in thread_list:

thread.join()

这样运行会卡死,请问怎样控制5个线程或者10个线程呢?

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
大家讲道理

pool = threadpool.ThreadPool(poolSize)
poolSize这里来控制线程数量

import threadpool
import requests

def get_url(url):
    r = requests.get(url)
    return url, r.status_code

def print_result(request, result):
    print result

urls = [
    'http://www.baidu.com',
    'http://www.jd.com',
    'http://www.taobao.com',
    'https://segmentfault.com',
    'http://www.baidu.com',
    'http://www.jd.com',
    'http://www.taobao.com',
    'https://segmentfault.com',
    'http://www.baidu.com',
    'http://www.jd.com',
    'http://www.taobao.com',
    'https://segmentfault.com'
]

pool = threadpool.ThreadPool(5)

for th in threadpool.makeRequests(get_url, urls, print_result):
    pool.putRequest(th)

pool.wait()
迷茫

你的问题大概是当任务多的时候线程会非常多。换一个思路看这个问题,使用一个线程,设置为5个或10个,然后把任务丢到线程池就好了,参考 python ThreadPoolExecutor 的用法。

伊谢尔伦

建议使用多进程来尝试是不是也会出现卡死现象!
尝试找下卡死原因,而不是马上去控制线程数量来隐藏这个卡死问题!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号