Многопроцессорный барьер 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)

0 ответов

Другие вопросы по тегам