- increased the number of workers in FlatCAM and made the number of workers customizable from Preferences

This commit is contained in:
Marius Stanciu 2019-04-05 16:27:55 +03:00 committed by Marius
parent cefb74d792
commit b7fce74ca3
5 changed files with 46 additions and 4 deletions

View File

@ -319,6 +319,7 @@ class App(QtCore.QObject):
"global_project_at_startup": self.ui.general_defaults_form.general_app_group.project_startup_cb,
"global_project_autohide": self.ui.general_defaults_form.general_app_group.project_autohide_cb,
"global_toggle_tooltips": self.ui.general_defaults_form.general_app_group.toggle_tooltips_cb,
"global_worker_number": self.ui.general_defaults_form.general_app_group.worker_number_sb,
"global_compression_level": self.ui.general_defaults_form.general_app_group.compress_combo,
"global_save_compressed": self.ui.general_defaults_form.general_app_group.save_type_cb,
@ -586,6 +587,7 @@ class App(QtCore.QObject):
"global_project_at_startup": False,
"global_project_autohide": True,
"global_toggle_tooltips": True,
"global_worker_number": 2,
"global_compression_level": 3,
"global_save_compressed": True,
@ -1221,7 +1223,10 @@ class App(QtCore.QObject):
self.log.debug("Finished adding Geometry and Excellon Editor's.")
#### Worker ####
self.workers = WorkerStack()
if self.defaults["global_worker_number"]:
self.workers = WorkerStack(workers_number=int(self.defaults["global_worker_number"]))
else:
self.workers = WorkerStack(workers_number=2)
self.worker_task.connect(self.workers.add_task)

View File

@ -8,7 +8,7 @@ class WorkerStack(QtCore.QObject):
worker_task = QtCore.pyqtSignal(dict) # 'worker_name', 'func', 'params'
thread_exception = QtCore.pyqtSignal(object)
def __init__(self):
def __init__(self, workers_number):
super(WorkerStack, self).__init__()
self.workers = []
@ -16,7 +16,7 @@ class WorkerStack(QtCore.QObject):
self.load = {} # {'worker_name': tasks_count}
# Create workers crew
for i in range(0, 2):
for i in range(0, workers_number):
worker = Worker(self, 'Slogger-' + str(i))
thread = QtCore.QThread()

View File

@ -13,6 +13,7 @@ CAD program, and create G-Code for Isolation routing.
- Gerber Editor: made geometry transfer (which is slow) to Editor to be multithreaded
- Gerber Editor: plotting process is showed in the status bar
- increased the number of workers in FlatCAM and made the number of workers customizable from Preferences
4.04.2019

View File

@ -3519,6 +3519,25 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
_( "Check this box if you want to have toolTips displayed\n"
"when hovering with mouse over items throughout the App.")
)
self.worker_number_label = QtWidgets.QLabel(_('Workers number:'))
self.worker_number_label.setToolTip(
_("The number of Qthreads made available to the App.\n"
"A bigger number may finish the jobs more quickly but\n"
"depending on your computer speed, may make the App\n"
"unresponsive. Can have a value between 2 and 16.\n"
"Default value is 2.\n"
"After change, it will be applied at next App start.")
)
self.worker_number_sb = FCSpinner()
self.worker_number_sb.setToolTip(
_("The number of Qthreads made available to the App.\n"
"A bigger number may finish the jobs more quickly but\n"
"depending on your computer speed, may make the App\n"
"unresponsive. Can have a value between 2 and 16.\n"
"Default value is 2.\n"
"After change, it will be applied at next App start.")
)
self.worker_number_sb.set_range(2, 16)
# Just to add empty rows
self.spacelabel = QtWidgets.QLabel('')
@ -3539,6 +3558,8 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
self.form_box.addRow(self.project_startup_label, self.project_startup_cb)
self.form_box.addRow(self.project_autohide_label, self.project_autohide_cb)
self.form_box.addRow(self.toggle_tooltips_label, self.toggle_tooltips_cb)
self.form_box.addRow(self.worker_number_label, self.worker_number_sb)
self.form_box.addRow(self.spacelabel, self.spacelabel)
# Add the QFormLayout that holds the Application general defaults

View File

@ -1382,6 +1382,18 @@ class SpinBoxDelegate(QtWidgets.QItemDelegate):
class FCSpinner(QtWidgets.QSpinBox):
def __init__(self, parent=None):
super(FCSpinner, self).__init__(parent)
self.readyToEdit = True
def mousePressEvent(self, e, parent=None):
super(FCSpinner, self).mousePressEvent(e) # required to deselect on 2e click
if self.readyToEdit:
self.lineEdit().selectAll()
self.readyToEdit = False
def focusOutEvent(self, e):
super(FCSpinner, self).focusOutEvent(e) # required to remove cursor on focusOut
self.lineEdit().deselect()
self.readyToEdit = True
def get_value(self):
return str(self.value())
@ -1394,6 +1406,9 @@ class FCSpinner(QtWidgets.QSpinBox):
return
self.setValue(k)
def set_range(self, min_val, max_val):
self.setRange(min_val, max_val)
# def sizeHint(self):
# default_hint_size = super(FCSpinner, self).sizeHint()
# return QtCore.QSize(EDIT_SIZE_HINT, default_hint_size.height())
@ -1430,7 +1445,7 @@ class FCDoubleSpinner(QtWidgets.QDoubleSpinBox):
self.setDecimals(val)
def set_range(self, min_val, max_val):
self.setRange(self, min_val, max_val)
self.setRange(min_val, max_val)
class Dialog_box(QtWidgets.QWidget):