Многопроцессорный барьер Send Control+C
Я использую многопроцессорность для параллельного запуска некоторых процессов. Однако иногда один из процессов застревает в цикле (цикл находится внутри пакета statsmodels). Я хочу использовать multiprocess.Barrier для "запуска" процесса, отправив команду ctrl+c этому процессу и вырвав его из цикла.
Приведенный ниже код почти делает то, что я хочу, но он просто убьет процесс вместо отправки команды ctrl+c. Какое действие в многопроцессорной обработке отправит эту команду?
from multiprocessing import Process, Barrier
import datetime
import Prod_Modeling_Pipeline as PMP
import boto3
import pandas
import time
#Define locations
bucketName = 'my-bucket'
output_location = '/home/ec2-user/'
#Pull ATM Setter Over
client = boto3.client('s3')
transfer = boto3.s3.transfer.S3Transfer(client=client)
transfer.download_file(bucketName,'PMP/Control_Files/'+'target_file.csv', output_location+'target_file.csv')
#Read-in control list
in_data = pandas.read_csv(output_location+'target_file.csv')
ids = in_data['var1']
#ids = ['AAAA','AAAB','AAAC','AAAD','AAAE','AAAF','AAAG',
# 'BAAA','BAAB','BAAC','BAAD','BAAE','BAAF','BAAG']
ni = 7
id_row = [['AAA']*ni for _ in xrange(len(ids)/ni)]
for i in xrange(len(ids)):
id_row[i/ni][i%ni] = ids[i]
Date = datetime.date.today().strftime('%Y-%m-%d')
totalstart = time.time()
for q in xrange(len(tid_row)):
processes = []
b = Barrier(ni, timeout=60*60)
for m in xrange(len(tid_row[q])):
temp = tid_row[q]
p = Process(target=PMP.PMP, args=(temp[m],Date,'VALIDATION'))
p.start()
processes.append(p)
for p in processes:
p.join()
print (time.time() - totalstart)