首页 > 系统相关 >多进程和多线程结合跑满cpu

多进程和多线程结合跑满cpu

时间:2022-09-05 11:15:43浏览次数:71  
标签:sender nums lock list threading 进程 import 多线程 cpu

import json
import multiprocessing
import threading
import time
import random
import requests
import urllib3

lock = threading.RLock()
urllib3.disable_warnings()

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
           "content-type": "application/json;charset=UTF-8",
           "Cookie": "SSO_TOKEN_KEY=05883cae006cb1cf9be7e0d6bbc823d87012307ed4238837c4d7cee1a7d4228; JSESSIONID=0747712F8F2C68196FA45393A10CFDE6",
           }
nums = 0


def send_routine(phone, nums):
    try:
        # lock.acquire()
        # print(phone)
        # lock.release()
        payloadData = {"keyword": phone, "pageNo": 1, "pageSize": 10, "sortField": "", "sortType": ""}
        # print(payloadData)
        conten = requests.post(url="https://saleapi.zmlearn.com/api/student/user/searchPage?lang=zh-CN&zone=480", headers=headers, data=json.dumps(payloadData), verify=False)
        # print(conten.content.decode("utf-8"))
        conten = json.loads(conten.content.decode("utf-8"))["data"]["list"][0]
        state = conten["state"]
        stuName = conten["stuName"]
        if "非" in state:
            lock.acquire()
            with open("非正式生.txt", 'a+', encoding='utf-8') as f:
                f.write("{}-{}-{}\n".format(stuName, state, phone))
            lock.release()
        else:
            lock.acquire()
            with open("其他.txt", 'a+', encoding='utf-8') as f:
                f.write("{}-{}-{}\n".format(stuName, state, phone))
            lock.release()
    except:
        pass
        # lock.acquire()
        # with open("没数据.txt", 'a+', encoding='utf-8') as f:
        #     f.write("{}-{}-{}\n".format("", "", phone))
        # lock.release()
    # lock.release()


def xc(num, nums):
    # try:
    #     with open("没数据.txt", 'rb') as f:
    #         offset = -50
    #         f.seek(offset, 2)
    #         lines = f.readlines()
    #         start_num = lines[-1].strip()[-8:]
    # except:
    #     start_num = 10000000
    threading_list = []
    for n in range(10000000, 999999990):
        # for n in range(start_num, 99999999):
        try:
            sender = threading.Thread(target=send_routine, args=(num + str(random.randint(10000000, 99999999)), nums,))  # 多线程
            sender.start()  # 启动
            threading_list.append(sender)
        except:
            pass
    for i in threading_list:
        i.join()


if __name__ == '__main__':
    nums = 0
    st = int(time.time())
    print(st)
    multiprocessing_list = []
    for n in ["134", "135", "136", "137", "138", "139", "147", "150", "151", "152", "157", "158", "159", "172", "182", "183", "184", "187", "188", "130", "131", "132", "155", "156", "176", "185", "186" "133", "149", "153", "173", "175", "177", "180", "181", "189"]:
        try:
            sender = multiprocessing.Process(target=xc, args=(n, nums,))  # 多线程
            sender.start()  # 启动
            multiprocessing_list.append(sender)
        except:
            pass
    for i in multiprocessing_list:
        i.join()

  

标签:sender,nums,lock,list,threading,进程,import,多线程,cpu
From: https://www.cnblogs.com/yoyo1216/p/16657377.html

相关文章

  • java随笔(七)——多线程(比较详细)
    线程线程是进程中单个的顺序控制流,是一条执行路径单线程:一个进程如果只有一条执行路径,则称为单线程程序多线程:一个进程如果有多条执行路径,则称为多线程程序多线程的实......
  • Java多线程相关概念
    Java多线程相关概念1.并发是在同一实体上的多个事件,是在同一台处理器上“同时”处理多个任务,同一时刻,其实是只有一个事件在发生2.并行是在不同实体上的多个事件,是在......
  • 多线程---Thread和Runnable
    多线程参考视频:多线程02:线程、进程、多线程哔哩哔哩bilibili1.概念     2.线程创建创建线程方式一:继承Thread类,重写run()方法,调用start开启线程packagec......
  • *第十五章 进程地址空间
    书中有很多内容讲的是内存的操作,不看,跳过              ......
  • 进程与线程
    1.进程是什么?进程是处于执行期的程序以及相关资源的总称2.一个进程里都包含什么?程序的代码段,全局变量数据段,处理器状态,内存地址空间,打开的文件,挂起的信号,进程栈,内核内......
  • [自制操作系统] 第19回 实现用户进程(下)
    目录一、前景回顾二、进程的创建与初始化三、如何进行进程的切换四、运行测试五、原书勘误 一、前景回顾在上一回我们大概讲述了任务切换的发展,并且知道Linux......
  • C#:进程之间传递数据
    一、思路在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有使用内存映射文件通过共享内存DLL共享内存使用SendMessage向另一进程发送WM_COPY......
  • Linux下查看系统中占用内存和CPU最多的进程
    Linux下查看系统中占用内存和CPU最多的进程前一段时间参加面试,被问到一个场景题:就比如说我们发现一台Linux的服务器,它的一些系统资源,比如说CPU内存都涨得比较厉害的。......
  • 【C++】C++ qt 与 python 简单进程通讯
    前言准备用C++写一个简单的文字转语音的小东西,对C++qt这个怎么弄不太清楚(现在看到qt5.8后有个叫QTextToSpeech的东西),发现python调用一些库来进行文字转语音的发声比较简......
  • 比较:java多线程 sleep()和wait()
    相信看这篇文章的朋友都已经知道进程和线程的区别,也都知道了为什么要使用多线程了。这两个方法主要来源是,sleep用于线程控制,而wait用于线程间的通信,与wait配套的......