hey i have this code
when starting the Process to make database it freeze at all what should i do?

# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
import sys
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(400, 300)
        Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "memo md5 crypter", None, QtGui.QApplication.UnicodeUTF8))
        self.label = QtGui.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(50, 20, 321, 71))
        self.label.setText(QtGui.QApplication.translate("Dialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Ubuntu\'; font-size:11pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:26pt; font-weight:600;\">memo md5 cracker</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setObjectName(_fromUtf8("label"))
        self.md5hash = QtGui.QLineEdit(Dialog)
        self.md5hash.setGeometry(QtCore.QRect(70, 100, 291, 27))
        self.md5hash.setObjectName(_fromUtf8("md5hash"))
        self.label_2 = QtGui.QLabel(Dialog)
        self.label_2.setGeometry(QtCore.QRect(30, 100, 41, 17))
        self.label_2.setText(QtGui.QApplication.translate("Dialog", "md5:", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.progress = QtGui.QProgressBar(Dialog)
        self.progress.setGeometry(QtCore.QRect(20, 260, 361, 23))
        self.progress.setProperty("value", 0)
        self.progress.setObjectName(_fromUtf8("progress"))
        self.generate = QtGui.QPushButton(Dialog)
        self.generate.setGeometry(QtCore.QRect(20, 210, 151, 27))
        self.generate.setText(QtGui.QApplication.translate("Dialog", "generate data base", None, QtGui.QApplication.UnicodeUTF8))
        self.generate.setObjectName(_fromUtf8("generate"))
        self.check = QtGui.QPushButton(Dialog)
        self.check.setGeometry(QtCore.QRect(180, 210, 97, 27))
        self.check.setText(QtGui.QApplication.translate("Dialog", "check hash", None, QtGui.QApplication.UnicodeUTF8))
        self.check.setObjectName(_fromUtf8("check"))
        self.quit = QtGui.QPushButton(Dialog)
        self.quit.setGeometry(QtCore.QRect(290, 210, 97, 27))
        self.quit.setText(QtGui.QApplication.translate("Dialog", "Quit", None, QtGui.QApplication.UnicodeUTF8))
        self.quit.setObjectName(_fromUtf8("quit"))
        self.label_3 = QtGui.QLabel(Dialog)
        self.label_3.setGeometry(QtCore.QRect(30, 140, 67, 17))
        self.label_3.setText(QtGui.QApplication.translate("Dialog", "statue:", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.statue = QtGui.QLabel(Dialog)
        self.statue.setGeometry(QtCore.QRect(80, 135, 301, 31))
        self.statue.setText(QtGui.QApplication.translate("Dialog", "idle", None, QtGui.QApplication.UnicodeUTF8))
        self.statue.setObjectName(_fromUtf8("statue"))

        self.retranslateUi(Dialog)
        QtCore.QObject.connect(self.quit, QtCore.SIGNAL(_fromUtf8("clicked()")), Dialog.close)
        QtCore.QObject.connect(self.generate, QtCore.SIGNAL(_fromUtf8("clicked()")), self.generatefun)
        QtCore.QObject.connect(self.check, QtCore.SIGNAL(_fromUtf8("clicked()")), self.checkfun)


        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        pass
    def generatefun(self):
        import anydbm
        import string
        import hashlib
        from itertools import product
        from multiprocessing import Process
        t1=Process(name="t1", target=self.g1)
        t1.start()
        t1.join()
        t2=Process(name="t2", target=self.g2)
        t2.start()
        t2.join()
    def g1(self):
    import hashlib
    from itertools import product
    import anydbm
    import string
        str=string.printable
        x1=1
        md1=hashlib.md5()
        db1=anydbm.open("md1.dat", "c")
        while x1<100:
            iter1=product(str, repeat=x1)
            for i1 in iter1:
                ij1="".join(i1)
                md1.update(ij1)
                db1[md1.hexdigest()]=ij1
            self.changepro(x1)
            x1=x1+1
        db1.close()
        self.changepro(0)
    def g2(self):
    import hashlib
    from itertools import product
    import anydbm
    import string
        str=string.printable
        x2=100
        md2=hashlib.md5()
        db2=anydbm.open("md2.dat", "c")
        while x2<200:
            iter2=product(str, repeat=x2)
            for i2 in iter2:
                ij2="".join(i2)
                md2.update(ij2)
                md2.update(ij2)
                db2[md2.hexdigest()]=ij2
            self.changepro(x2-100)
            x2=x2+1
            self.changepro(0)
        db2.close()
    def checker(self, md5input):
    import hashlib
    from itertools import product
    import anydbm
        try:
            db1=anydbm.open("md1.dat", "r")
        except IOError:
            self.changeresult("data base 1 not found!")
        try:
            db2=anydbm.open("md2.dat", "r")
        except IOError:
            self.changeresult("data base 2 not found") 

        if db1[md5input]:
            self.changeresult(db1[md5input])
            db1.close()
            db2.close()
        elif db2[md5input]:
            self.changeresult(db2[md5input])
            db1.close()
            db2.close()
        else:
            self.changeresult("hash not found in the data base")
            db1.close()
            db2.close()
    def checkfun(self):
    from multiprocessing import Process
        c1=Process(name="c1", target=self.checker)
        c1.start()

    def changeresult(self, texthere):
        self.statue.setText(QtGui.QApplication.translate("Dialog", texthere, None, QtGui.QApplication.UnicodeUTF8))
    def changepro(self, value):
        self.progress.setProperty("value", int(value))

app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())

Put all your import statements at the start of the code. Repeatedly importing within functions is inefficient and can lead to errors.

hmmm will that stop freezing the program?
i mean is there any errors in the code except the importing issue??

hmm like what? is the prolblem with Qt it self? should i use another stuff like wx or gtk? the problem that i searched alot and i couldn't find a solution i guess it becuase the threading andi don't know what to use Process from multiprocessing or threading because i don't know what the different between them and i'v updated my code here it is "sorry for long code but i want to type it all to know where the problem is :|"
and am using Eric ide on ubuntu and i get this error

(process:16046): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.

is this causing the problem? or should i start a new thread for it ? sorry for asking too much
i use ubuntu 11.10 locale EN_US utf-8

# -*- coding: utf-8 -*-
import anydbm
import string
import hashlib
from itertools import product
from multiprocessing import Process
from PyQt4 import QtCore, QtGui
import sys
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(400, 300)
        Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "memo md5 crypter", None, QtGui.QApplication.UnicodeUTF8))
        self.label = QtGui.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(50, 20, 321, 71))
        self.label.setText(QtGui.QApplication.translate("Dialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Ubuntu\'; font-size:11pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:26pt; font-weight:600;\">memo md5 cracker</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setObjectName(_fromUtf8("label"))
        self.md5hash = QtGui.QLineEdit(Dialog)
        self.md5hash.setGeometry(QtCore.QRect(70, 100, 291, 27))
        self.md5hash.setObjectName(_fromUtf8("md5hash"))
        self.label_2 = QtGui.QLabel(Dialog)
        self.label_2.setGeometry(QtCore.QRect(30, 100, 41, 17))
        self.label_2.setText(QtGui.QApplication.translate("Dialog", "md5:", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.progress = QtGui.QProgressBar(Dialog)
        self.progress.setGeometry(QtCore.QRect(20, 260, 361, 23))
        self.progress.setProperty("value", 0)
        self.progress.setObjectName(_fromUtf8("progress"))
        self.generate = QtGui.QPushButton(Dialog)
        self.generate.setGeometry(QtCore.QRect(20, 210, 151, 27))
        self.generate.setText(QtGui.QApplication.translate("Dialog", "generate data base", None, QtGui.QApplication.UnicodeUTF8))
        self.generate.setObjectName(_fromUtf8("generate"))
        self.check = QtGui.QPushButton(Dialog)
        self.check.setGeometry(QtCore.QRect(180, 210, 97, 27))
        self.check.setText(QtGui.QApplication.translate("Dialog", "check hash", None, QtGui.QApplication.UnicodeUTF8))
        self.check.setObjectName(_fromUtf8("check"))
        self.quit = QtGui.QPushButton(Dialog)
        self.quit.setGeometry(QtCore.QRect(290, 210, 97, 27))
        self.quit.setText(QtGui.QApplication.translate("Dialog", "Quit", None, QtGui.QApplication.UnicodeUTF8))
        self.quit.setObjectName(_fromUtf8("quit"))
        self.label_3 = QtGui.QLabel(Dialog)
        self.label_3.setGeometry(QtCore.QRect(30, 140, 67, 17))
        self.label_3.setText(QtGui.QApplication.translate("Dialog", "statue:", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.statue = QtGui.QLabel(Dialog)
        self.statue.setGeometry(QtCore.QRect(80, 135, 301, 31))
        self.statue.setText(QtGui.QApplication.translate("Dialog", "idle", None, QtGui.QApplication.UnicodeUTF8))
        self.statue.setObjectName(_fromUtf8("statue"))

        QtCore.QObject.connect(self.quit, QtCore.SIGNAL(_fromUtf8("clicked()")), Dialog.close)
        QtCore.QObject.connect(self.generate, QtCore.SIGNAL(_fromUtf8("clicked()")), self.generatefun)
        QtCore.QObject.connect(self.check, QtCore.SIGNAL(_fromUtf8("clicked()")), self.checkfun)


        QtCore.QMetaObject.connectSlotsByName(Dialog)


    def generatefun(self):

        t1=Process(name="t1", target=self.g1)
        t1.start()
        t1.join()
        t2=Process(name="t2", target=self.g2)
        t2.start()
        t2.join()
    def g1(self):

        str=string.printable
        x1=1
        md1=hashlib.md5()
        db1=anydbm.open("md1.dat", "n")
        while x1<100:
            iter1=product(str, repeat=x1)
            for i1 in iter1:
                ij1="".join(i1)
                md1.update(ij1)
                db1[md1.hexdigest()]=ij1
            self.changepro(x1)
            x1=x1+1
        db1.close()
        self.changepro(0)
    def g2(self):

        str=string.printable
        x2=100
        md2=hashlib.md5()
        db2=anydbm.open("md2.dat", "n")
        while x2<200:
            iter2=product(str, repeat=x2)
            for i2 in iter2:
                ij2="".join(i2)
                md2.update(ij2)
                md2.update(ij2)
                db2[md2.hexdigest()]=ij2
            self.changepro(x2-100)
            x2=x2+1
            self.changepro(0)
        db2.close()
    def checker(self, md5input):

        try:
            db1=anydbm.open("md1.dat" )
        except :
            self.changeresult("data base 1 not found!")
            db1=anydbm.open("md1.dat", "n")
        try:
            db2=anydbm.open("md2.dat")
        except :
            self.changeresult("data base 2 not found")
            db2=anydbm.open("md2.dat", "n")           


        if db1.has_key(md5input):
            self.changeresult(db1[md5input])
            db1.close()
            db2.close()
        elif db2.has_key(md5input):
            self.changeresult(db2[md5input])
            db1.close()
            db2.close()
        else:
            self.changeresult("hash not found in the data base")
            db1.close()
            db2.close()
    def checkfun(self):
        c1=Process(name="c1", target=self.checker(str(self.md5hash.text())))
        c1.start()
        c1.join()
    def changeresult(self, texthere):
        self.statue.setText(QtGui.QApplication.translate("Dialog", texthere, None, QtGui.QApplication.UnicodeUTF8))
    def changepro(self, value):
        self.progress.setProperty("value", int(value))

app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())

Edited 4 Years Ago by memomk

hey i have updated my code it still freezzes but i have thus error now
QPixmap: It is not safe to use pixmaps outside the GUI thread
QPixmap: It is not safe to use pixmaps outside the GUI thread
Segmentation fault

# -*- coding: utf-8 -*-
import dbm
import string
import hashlib
from itertools import product
from multiprocessing import Process
from threading import Thread
from PyQt4 import QtCore, QtGui
import time
import sys
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(400, 300)
        Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "memo md5 crypter", None, QtGui.QApplication.UnicodeUTF8))
        self.label = QtGui.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(50, 20, 321, 71))
        self.label.setText(QtGui.QApplication.translate("Dialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Ubuntu\'; font-size:11pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:26pt; font-weight:600;\">memo md5 cracker</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setObjectName(_fromUtf8("label"))
        self.md5hash = QtGui.QLineEdit(Dialog)
        self.md5hash.setGeometry(QtCore.QRect(70, 100, 291, 27))
        self.md5hash.setObjectName(_fromUtf8("md5hash"))
        self.label_2 = QtGui.QLabel(Dialog)
        self.label_2.setGeometry(QtCore.QRect(30, 100, 41, 17))
        self.label_2.setText(QtGui.QApplication.translate("Dialog", "md5:", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.progress = QtGui.QProgressBar(Dialog)
        self.progress.setGeometry(QtCore.QRect(20, 260, 361, 23))
        self.progress.setProperty("value", 0)
        self.progress.setObjectName(_fromUtf8("progress"))
        self.generate = QtGui.QPushButton(Dialog)
        self.generate.setGeometry(QtCore.QRect(20, 210, 151, 27))
        self.generate.setText(QtGui.QApplication.translate("Dialog", "generate data base", None, QtGui.QApplication.UnicodeUTF8))
        self.generate.setObjectName(_fromUtf8("generate"))
        self.check = QtGui.QPushButton(Dialog)
        self.check.setGeometry(QtCore.QRect(180, 210, 97, 27))
        self.check.setText(QtGui.QApplication.translate("Dialog", "check hash", None, QtGui.QApplication.UnicodeUTF8))
        self.check.setObjectName(_fromUtf8("check"))
        self.quit = QtGui.QPushButton(Dialog)
        self.quit.setGeometry(QtCore.QRect(290, 210, 97, 27))
        self.quit.setText(QtGui.QApplication.translate("Dialog", "Quit", None, QtGui.QApplication.UnicodeUTF8))
        self.quit.setObjectName(_fromUtf8("quit"))
        self.label_3 = QtGui.QLabel(Dialog)
        self.label_3.setGeometry(QtCore.QRect(30, 140, 67, 17))
        self.label_3.setText(QtGui.QApplication.translate("Dialog", "statue:", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.statue = QtGui.QLabel(Dialog)
        self.statue.setGeometry(QtCore.QRect(80, 135, 301, 31))
        self.statue.setText(QtGui.QApplication.translate("Dialog", "idle", None, QtGui.QApplication.UnicodeUTF8))
        self.statue.setObjectName(_fromUtf8("statue"))

        QtCore.QObject.connect(self.quit, QtCore.SIGNAL(_fromUtf8("clicked()")), Dialog.close)
        QtCore.QObject.connect(self.generate, QtCore.SIGNAL(_fromUtf8("clicked()")), self.generatefun)
        QtCore.QObject.connect(self.check, QtCore.SIGNAL(_fromUtf8("clicked()")), self.checkfun)


        QtCore.QMetaObject.connectSlotsByName(Dialog)


    def generatefun(self):

        t1=Thread(target=self.g1)
        t1.start()
        t1.join()

        time.sleep(1)
    def g1(self):

        strj=string.printable

        x1=1
        md1=hashlib.md5()
        db1=dbm.open("md1", "n")
        while x1<=200:
            iter1=product(strj, repeat=x1)
            for i1 in iter1:
                ij1="".join(i1)
                md1.update(ij1)


                mdhex=md1.hexdigest()
                db1[mdhex]=ij1
            self.changepro(x1/2)
            time.sleep(10)

            x1=x1+1
        db1.close()
        self.changepro(0)

    def checker(self, md5input):

        try:
            db1=dbm.open("md1" )
        except :
            self.changeresult("data base 1 not found!")
            db1=dbm.open("md1", "n")


        if db1.has_key(md5input):
            time.sleep(1.5)
            self.changeresult(db1[md5input])
            db1.close()

        else:
            self.changeresult("hash not found in the data base")
            db1.close()
    def checkfun(self):
        c1=Process(name="c1", target=self.checker(str(self.md5hash.text())))
        c1.start()
        c1.join()
    def changeresult(self, texthere):
        self.statue.setText(QtGui.QApplication.translate("Dialog", texthere, None, QtGui.QApplication.UnicodeUTF8))
    def changepro(self, value):
        self.progress.setProperty("value", int(value))

app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)

Dialog.show()
sys.exit(app.exec_())

`

Edited 4 Years Ago by memomk

This article has been dead for over six months. Start a new discussion instead.