blob: 8ced35a7e65ca94bba5fc309db119ddae3f8cba2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
# =========================================================================
# FILE: WorkerThread.py
#
# USAGE: ---
#
# DESCRIPTION: This class open all third party application using QT Thread
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: Fahim Khan, fahim.elex@gmail.com
# MODIFIED: Rahul Paknikar, rahulp@iitb.ac.in
# ORGANIZATION: eSim team at FOSSEE, IIT Bombay.
# CREATED: Tuesday 24 February 2015
# REVISION: Friday 14 February 2020
# =========================================================================
from PyQt4 import QtCore
import subprocess
from configuration.Appconfig import Appconfig
class WorkerThread(QtCore.QThread):
"""
Initialise a QThread with the passed arguments
WorkerThread uses QThread to support threading operations for
other PyQT windows
This is a helper functions, used to create threads for various commands
@params
:args => takes a space separated string of comamnds to be execute
in different child processes (see subproces.Popen())
@return
None
"""
def __init__(self, args):
QtCore.QThread.__init__(self)
self.args = args
self.my_workers = []
def __del__(self):
"""
__del__ is a called whenever garbage collection is initialised
Here, it waits (self.wait()) for the thread to finish executing
before garbage collecting it
@params
@return
None
"""
self.wait()
def get_proc_threads(self):
"""
This function is a getter for the list of project's workers,
and is called to check if project's schematic is open or not.
@params
@return
:self.my_workers
"""
return self.my_workers
def run(self):
"""
run is the function that is called, when we start the thread as
thisThread.start()
Here, it makes system calls for all args passed (self.args)
@params
@return
None
"""
print("Worker Thread Calling Command :", self.args)
self.call_system(self.args)
def call_system(self, command):
"""
call_system is used to create childprocess for the passed arguments
(self.args) and also pass the process created and its id to config file
Apponfig() object contains procThread and proc_dist used to
track processes called
@params
:command => (self.args) takes space separated string of\
comamnds to be executed in different child processes
(see subproces.Popen())
"""
procThread = Appconfig()
proc = subprocess.Popen(command.split())
self.my_workers.append(proc)
procThread.procThread_list.append(proc)
procThread.proc_dict[procThread.current_project['ProjectName']].append(
proc.pid)
|