Python线程池+进城池

Posted yakoazz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python线程池+进城池相关的知识,希望对你有一定的参考价值。

#coding=utf-8
import multiprocessing
import threadpool
import threading
import time
import os
import random

mutex = threading.Lock()


def write_to_file(file_name, text):
    mutex.acquire()
    a = open(file_name, ‘a‘)
    a.write(text + "\n")
    a.close()
    mutex.release()



def test1(msg):
    t_start = time.time()
    print("%s开始执行,进程号为%d" % (msg, os.getpid()))
    time.sleep(random.random() * 2)
    t_stop = time.time()
    print("%s执行完成,耗时%.2f" % (msg, t_stop - t_start))




def multithread(parm_list,threading_num):
    #这里存放的是放入线程池的参数
    #放入的内容是列表
    #调用函数的参数和列表的内容顺序是一样的
    for i in parm_list:
        password_list.append((i, None))

    pool = threadpool.ThreadPool(threading_num)
    requests_a = threadpool.makeRequests(req, password_list)
    [pool.putRequest(req) for req in requests_a]
    pool.wait()


def multiprocess():
    po = multiprocessing.Pool(3)
    for i in range(0, 10):
        # Pool().apply_async(要调用的目标,(传递给目标的参数元祖,))
        # 每次循环将会用空闲出来的子进程去调用目标
        # for j in range()
        po.apply_async(test1, (i,))

    print("-----start-----")

    po.close()  # 关闭进程池,关闭后po不再接收新的请求
    po.join()  # 等待po中所有子进程执行完成,必须放在close语句之后

    print("-----end-----")


def main():
    pass

 

以上是关于Python线程池+进城池的主要内容,如果未能解决你的问题,请参考以下文章

Python练习利用线程池爬取电影网站信息

python中设置线程池最大数量不管用

[python] ThreadPoolExecutor线程池 python 线程池

Python多线程中队列到底是个啥概念?

python 多线程爬取网站数据利用线程池

Python中级精华-创建线程池