V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zxteam
V2EX  ›  Python

请问多线程代码完成后,为何没有自动注销

  •  
  •   zxteam · 2018-06-07 17:01:35 +08:00 · 1880 次点击
    这是一个创建于 2121 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我写了个每 50 秒自动登陆查询多个 ID 相关信息的代码,用到了多线程,每次执行前,都清空了一次多线程列表,thread_list = [],为何子线程执行后,print 出来的线程 ID 名一直是累加的,就是
    thread - 1,
    thread - 2,
    ………………
    thread - 1000
    一直是这样加下去,而不是每 50 秒恢复一次。这是不是代表服务器同时打开了这么多线程呢?请问如何真正清空线程,让服务器只执行真正用到的 10 个线程。

    代码写得较粗糙,恳请各位帮优雅优化一下,感谢


    import threading
    import time
    import requests
    from threading import current_thread

    def autocheck():
    while True:
    bktels = []
    thread_list = []
    bktels = ['ID1','ID2','ID3','ID4','ID5','ID6','ID7','ID8','ID9','ID10']
    for n in bktels:
    th = threading.Thread(target=getPID, args=(n,))
    thread_list.append(th)
    for t in thread_list:
    t.start()
    for t in thread_list:
    t.join()
    time.sleep(50)


    def getPID(n):
    threada = threading.current_thread()
    str2 = ','.join('%s' %id for id in n)
    print (threada.getName() +' ID:'+str2)
    url = 'http://127.0.0.1/login.php?id=' + str2
    html=requests.get(url)
    print html.text

    autocheck()
    2 条回复    2018-06-08 10:14:30 +08:00
    fmumu
        1
    fmumu  
       2018-06-08 07:08:05 +08:00 via Android
    python 不清楚,java 中线程 id 是一直自增的,线程执行完就死了啊,你这个需求是不是考虑线程池?
    ilucio
        2
    ilucio  
       2018-06-08 10:14:30 +08:00
    以前也遇到过一样的问题,当出现 thread - 1000 的时候表示真的有 1000 个线程在运行,可以用 threading.activeCount()函数检测下。最后改用线程池解决了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1212 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:14 · PVG 07:14 · LAX 16:14 · JFK 19:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.