import multiprocessing
def send_request(data):
lock.acquire()
print(data,' ',os.getpid())
lock.release()
def init(l):
global lock
lock = l
if __name__ == '__main__':
data_list = ['data1', 'data2', 'data3']
lock = multiprocessing.Lock()
pool = multiprocessing.Pool(8, initializer=init, initargs=(lock,),maxtasksperchild=1)
pool.map(send_request, range(10000))
pool.close()
pool.join()
程序的部分输出如下
9995 15824
9996 15824
9997 15824
9998 15824
9999 15824
根据maxtasksperchild的设置,应该是每个进程只执行一个任务,为什么输出显示一个进程执行了多个任务。
但是,当我将语句从 更改为 时pool.map(send_request, range(10000)),pool.map(send_request, range(9))输出显示 maxtasksperchild 设置正常。
0 11776
1 5424
2 10984
3 15848
4 11000
5 16728
6 4480
7 12016
8 12936
Python
python-多处理
江户川乱折腾
潇湘沐
相关分类