質問下部に示すPythonのコードで,以下のエラーメッセージが出て対処の仕方がわかりません.

Traceback (most recent call last):
  File "LSVM_multi.py", line 62, in <module>
    with multiprocessing.Pool(Thread_num) as p:
AttributeError: __exit__

下記のPythonのコードをどのように修正したらよいかご教授宜しくお願いします.

#!/usr/bin/env python
# coding: utf-8

from sklearn import svm
import numpy as np
import csv
import multiprocessing

inputFilename = "tvCorrelationCoefALL_NTrials.csv"
outputFilename = "result_linearSVM_L2_L2.csv"


# csv読み込み
# 1次元: [1列目, 2列目] = [係数, (クラス1, クラス2) = (1, -1)]
data = np.loadtxt(inputFilename, delimiter=",")

X = data[:,0]   # 係数を取得
y = data[:,1]   # クラスラベルを取得

print("file read complete")

X = X.reshape(-1, 1)

# --------------------------------------

# 試行回数(中央値をとるため奇数)
iteration = 101
iteration += 1

# 使用するCPUコア数
Thread_num = 2

# 結果格納の配列
result = []

def getArr(X,y):
    iterArr = []
    # for文でCの最適値を算出
    for i in [1]+list(range(10, 10001, 10)):
        # 線形SVMのインスタンスを生成
        model = svm.LinearSVC(penalty='l2', loss='squared_hinge',dual=True, C=i, max_iter=1000000)

        # モデルの学習.fit関数
        model.fit(X, y)

        # 境界線
        line = -model.intercept_ / model.coef_

        # 配列
        iterArr.append(line)

    return iterArr


def wrapper_getArr(args):
    return getArr(*args)


for k in range(0, int(iteration/Thread_num), 1):
    variable = []
    for i in range(Thread_num):
        variable.append([X,y])

    with multiprocessing.Pool(Thread_num) as p:
        # (X,y)
        iterArr = p.map(wrapper_getArr, variable)

    for temp in iterArr:
        # 配列に連結
        result.append(temp)


    # 確認
    print(k)


# 結果をCSV出力
with open(outputFilename, 'w') as file:
    writer = csv.writer(file, lineterminator='\n')
    writer.writerows(result)


print("Program end")