Source code for core.multithreaded

# -*- coding: utf-8 -*-
import os
import multiprocessing
import time
from datetime import datetime
from multiprocessing import Process
import Queue
import traceback
from subprocess import Popen

from gsi.settings import EXECUTE_FE_COMMAND


[docs]class MultiprocessingCards(multiprocessing.Process): """**Class receives a card that you want to run. It creates a queue and starts a multithreaded cards.**""" def __init__(self, queue, flag='cards'): multiprocessing.Process.__init__(self) self.__queue = queue # Queue of the tasks self.kill_received = False # If I'll want stoped variable self.flag = flag # object type
[docs] def run(self): """**Method run multi-threaded process.**""" while not self.kill_received: try: item = self.__queue.get_nowait() # Wait of data except Queue.Empty: break error = True try: error = self.multiprocessing_cards(item) except: traceback.print_exc() time.sleep(0.1) self.__queue.task_done() # Task ended if error: self.__queue.put(item) # If the mistake was, then again with that data return
[docs] def multiprocessing_cards(self, param): """**The method receives the parameters and starts the implementation process for each type.**""" param_list = param.split('%') if self.flag == 'cards': run_id = param_list[0] card_id = param_list[1] ex_fe_com = Popen( 'nohup {0} {1} {2} &'.format(EXECUTE_FE_COMMAND, run_id, card_id), shell=True, ) if self.flag == 'file': fd = open(param_list[0], 'w+') fd.write(param_list[2]) os.chmod(param_list[0], 0777) os.chmod(param_list[1], 0777) fd.close()