Search code examples
pythonpython-2.7xbmc

update the database while using the timer


I'm working on my python script to write the data in a sqlite3 database at the same time when using the time.sleep function. I'm having a trouble with writing the database at the same time when I'm using the time.sleep function.

I can be able to create the database table without have any problem, but when I use the time.sleep function, it will stop writing the data into the database.

When I use this code:

import time
import threading

#DOWNLOAD THE XML SOURCE HERE
url = ADDON.getSetting('allchannel.url')
req = urllib2.Request(url)
response = urllib2.urlopen(req)
data = response.read()
response.close()
profilePath = xbmc.translatePath(os.path.join('special://userdata/addon_data/script.tvguide',''))
self.getControl(4202).setLabel("1%")


if os.path.exists(profilePath):
   profilePath = profilePath + 'source.db'
   con = database.connect(profilePath)
   cur = con.cursor()
   cur.execute('CREATE TABLE programs(channel TEXT, title TEXT, start_date TIMESTAMP, stop_date TIMESTAMP, description TEXT)')
   con.commit()
   con.close
   tv_elem = ElementTree.parse(StringIO.StringIO(data)).getroot()
   profilePath = xbmc.translatePath(os.path.join('special://userdata/addon_data/script.tvguide', ''))
   profilePath = profilePath + 'source.db'
   con = sqlite3.connect(profilePath)
   cur = con.cursor()
   channels = OrderedDict()

   # Get the loaded data
   for channel in tv_elem.findall('channel'):
       channel_name = channel.find('display-name').text
       for program in channel.findall('programme'):
           title = program.find('title').text
           start_time = program.get("start")
           stop_time = program.get("stop")
           cur.execute("INSERT INTO programs(channel, title, start_date, stop_date)" + " VALUES(?, ?, ?, ?)", [channel_name, title, start_time, stop_time])
           con.commit()
           con.close

           time.sleep(2)
           #Stop the timer and set the timer again for 2 seconds
           self.getControl(4202).setLabel("8%")

           time.sleep(2)
           #Stop the timer and set the timer again for another 2 seconds
           self.getControl(4202).setLabel("16%")

           time.sleep(2)
           #Stop the timer and set the timer again for another 2 seconds
           self.getControl(4202).setLabel("24%")

So when I try this without using the time.sleep function:

   # Get the loaded data
   for channel in tv_elem.findall('channel'):
       channel_name = channel.find('display-name').text
       for program in channel.findall('programme'):
           title = program.find('title').text
           start_time = program.get("start")
           stop_time = program.get("stop")
           cur.execute("INSERT INTO programs(channel, title, start_date, stop_date)" + " VALUES(?, ?, ?, ?)", [channel_name, title, start_time, stop_time])
           con.commit()
           con.close

It will allow me to write the data into the database if I use without the time.sleep function. I want to use the time.sleep function or the timer, because I want to update the string in the setLabel function in every 2 seconds while I'm writing the data into the database. I tried to use the while loop, it will freeze the application that I'm running on.

Can you please tell me how I can write the data into the database at the same time when I'm using the time.sleep or the timer function?

Edit: I get too many prints when I running the threading:

15:39:51 T:6980  NOTICE: hello, world
15:39:51 T:2104  NOTICE: hello, world
15:39:51 T:6924  NOTICE: hello, world
15:39:51 T:6052  NOTICE: hello, world
15:39:51 T:1696  NOTICE: hello, world
15:39:51 T:6164  NOTICE: hello, world
15:39:51 T:1312  NOTICE: hello, world
15:39:51 T:3804  NOTICE: hello, world
15:39:51 T:6364  NOTICE: hello, world
15:39:51 T:4208  NOTICE: hello, world
15:39:51 T:3332  NOTICE: hello, world
15:39:51 T:5428  NOTICE: hello, world
15:39:51 T:920  NOTICE: hello, world
15:39:51 T:6408  NOTICE: hello, world
15:39:51 T:7000  NOTICE: hello, world
15:39:51 T:1988  NOTICE: hello, world
15:39:51 T:5544  NOTICE: hello, world
15:39:51 T:6620  NOTICE: hello, world
15:39:51 T:6448  NOTICE: hello, world
15:39:51 T:1536  NOTICE: hello, world
15:39:51 T:1132  NOTICE: hello, world
15:39:51 T:6548  NOTICE: hello, world
15:39:51 T:1892  NOTICE: hello, world
15:39:51 T:6532  NOTICE: hello, world
15:39:51 T:3856  NOTICE: hello, world
15:39:51 T:788  NOTICE: hello, world
15:39:51 T:6416  NOTICE: hello, world
15:39:51 T:5692  NOTICE: hello, world
15:39:51 T:5256  NOTICE: hello, world
15:39:51 T:6696  NOTICE: hello, world
15:39:51 T:1352  NOTICE: hello, world
15:39:51 T:6656  NOTICE: hello, world
15:39:51 T:4844  NOTICE: hello, world
15:39:51 T:4672  NOTICE: hello, world
15:39:51 T:3636  NOTICE: hello, world
15:39:51 T:7052  NOTICE: hello, world
15:39:51 T:6264  NOTICE: hello, world
15:39:51 T:6336  NOTICE: hello, world
15:39:51 T:6332  NOTICE: hello, world
15:39:51 T:7064  NOTICE: hello, world
15:39:51 T:7148  NOTICE: hello, world
15:39:51 T:6984  NOTICE: hello, world
15:39:51 T:4924  NOTICE: hello, world
15:39:51 T:5716  NOTICE: hello, world
15:39:51 T:6960  NOTICE: hello, world
15:39:51 T:1828  NOTICE: hello, world
15:39:51 T:5492  NOTICE: hello, world
15:39:51 T:6560  NOTICE: hello, world
15:39:51 T:3328  NOTICE: hello, world
15:39:51 T:6880  NOTICE: hello, world
15:39:51 T:6152  NOTICE: hello, world
15:39:51 T:6892  NOTICE: hello, world
15:39:51 T:5048  NOTICE: hello, world
15:39:51 T:6788  NOTICE: hello, world
15:39:51 T:6168  NOTICE: hello, world
15:39:51 T:4656  NOTICE: hello, world
15:39:51 T:6392  NOTICE: hello, world
15:39:51 T:6928  NOTICE: hello, world
15:39:52 T:6240  NOTICE: hello, world
15:39:52 T:5240  NOTICE: hello, world
15:39:52 T:6824  NOTICE: hello, world
15:39:52 T:6716  NOTICE: hello, world
15:39:52 T:5384  NOTICE: hello, world
15:39:52 T:6008  NOTICE: hello, world
15:39:52 T:2280  NOTICE: hello, world
15:39:52 T:2612  NOTICE: hello, world
15:39:52 T:6012  NOTICE: hello, world
15:39:52 T:6820  NOTICE: hello, world
15:39:52 T:7080  NOTICE: hello, world
15:39:52 T:2556  NOTICE: hello, world
15:39:52 T:3904  NOTICE: hello, world
15:39:52 T:4284  NOTICE: hello, world
15:39:52 T:5648  NOTICE: hello, world
15:39:52 T:6076  NOTICE: hello, world
15:39:52 T:6516  NOTICE: hello, world
15:39:52 T:6552  NOTICE: hello, world
15:39:52 T:6768  NOTICE: hello, world
15:39:52 T:3464  NOTICE: hello, world
15:39:52 T:1240  NOTICE: hello, world
15:39:52 T:1992  NOTICE: hello, world
15:39:52 T:6896  NOTICE: hello, world
15:39:52 T:6288  NOTICE: hello, world
15:39:52 T:6212  NOTICE: hello, world
15:39:52 T:6672  NOTICE: hello, world
15:39:52 T:7040  NOTICE: hello, world
15:39:52 T:6280  NOTICE: hello, world
15:39:52 T:7112  NOTICE: hello, world
15:39:52 T:5760  NOTICE: hello, world
15:39:52 T:6664  NOTICE: hello, world
15:39:52 T:6952  NOTICE: hello, world
15:39:52 T:7024  NOTICE: hello, world
15:39:52 T:6224  NOTICE: hello, world
15:39:52 T:5356  NOTICE: hello, world
15:39:52 T:5628  NOTICE: hello, world
15:39:52 T:4220  NOTICE: hello, world
15:39:52 T:6160  NOTICE: hello, world
15:39:52 T:6320  NOTICE: hello, world
15:39:52 T:4384  NOTICE: hello, world
15:39:52 T:6572  NOTICE: hello, world
15:39:52 T:5284  NOTICE: hello, world
15:39:52 T:7060  NOTICE: hello, world
15:39:52 T:3256  NOTICE: hello, world
15:39:52 T:5008  NOTICE: hello, world
15:39:52 T:6124  NOTICE: hello, world
15:39:52 T:912  NOTICE: hello, world
15:39:52 T:5408  NOTICE: hello, world
15:39:52 T:5560  NOTICE: hello, world
15:39:52 T:4052  NOTICE: hello, world
15:39:52 T:4416  NOTICE: hello, world
15:39:52 T:5392  NOTICE: hello, world
15:39:52 T:6236  NOTICE: hello, world
15:39:52 T:5940  NOTICE: hello, world
15:39:52 T:540  NOTICE: hello, world
15:39:52 T:4596  NOTICE: hello, world
15:39:52 T:3796  NOTICE: hello, world
15:39:52 T:6700  NOTICE: hello, world
15:39:52 T:6772  NOTICE: hello, world
15:39:52 T:7092  NOTICE: hello, world
15:39:52 T:6868  NOTICE: hello, world
15:39:53 T:5292  NOTICE: hello, world
15:39:53 T:6440  NOTICE: hello, world
15:39:53 T:6060  NOTICE: hello, world
15:39:53 T:5360  NOTICE: hello, world
15:39:53 T:5984  NOTICE: hello, world
15:39:53 T:6900  NOTICE: hello, world
15:39:53 T:4412  NOTICE: hello, world
15:39:53 T:2812  NOTICE: hello, world
15:39:53 T:5756  NOTICE: hello, world
15:39:53 T:4048  NOTICE: hello, world
15:39:53 T:5596  NOTICE: hello, world
15:39:53 T:6936  NOTICE: hello, world
15:39:53 T:6612  NOTICE: hello, world
15:39:53 T:1768  NOTICE: hello, world
15:39:53 T:5496  NOTICE: hello, world
15:39:53 T:3168  NOTICE: hello, world
15:39:53 T:4444  NOTICE: hello, world
15:39:53 T:7036  NOTICE: hello, world
15:39:53 T:2896  NOTICE: hello, world
15:39:53 T:7164  NOTICE: hello, world
15:39:53 T:6032  NOTICE: hello, world
15:39:53 T:6912  NOTICE: hello, world
15:39:53 T:4448  NOTICE: hello, world
15:39:53 T:3132  NOTICE: hello, world
15:39:53 T:6708  NOTICE: hello, world
15:39:53 T:6556  NOTICE: hello, world
15:39:53 T:6184  NOTICE: hello, world
15:39:53 T:6588  NOTICE: hello, world
15:39:53 T:5700  NOTICE: hello, world
15:39:53 T:6404  NOTICE: hello, world
15:39:53 T:6244  NOTICE: hello, world
15:39:53 T:3528  NOTICE: hello, world
15:39:53 T:7132  NOTICE: hello, world
15:39:53 T:6808  NOTICE: hello, world
15:39:53 T:6004  NOTICE: hello, world
15:39:53 T:876  NOTICE: hello, world
15:39:53 T:5080  NOTICE: hello, world
15:39:53 T:6668  NOTICE: hello, world
15:39:53 T:5580  NOTICE: hello, world
15:39:53 T:5488  NOTICE: hello, world
15:39:53 T:6344  NOTICE: hello, world
15:39:53 T:5732  NOTICE: hello, world
15:39:53 T:4160  NOTICE: hello, world
15:39:53 T:6300  NOTICE: hello, world
15:39:53 T:3472  NOTICE: hello, world
15:39:53 T:2772  NOTICE: hello, world
15:39:53 T:3444  NOTICE: hello, world
15:39:53 T:6568  NOTICE: hello, world
15:39:53 T:6856  NOTICE: hello, world
15:39:53 T:984  NOTICE: hello, world
15:39:53 T:6748  NOTICE: hello, world
15:39:53 T:6920  NOTICE: hello, world
15:39:53 T:5712  NOTICE: hello, world
15:39:53 T:6248  NOTICE: hello, world
15:39:53 T:5532  NOTICE: hello, world
15:39:53 T:5344  NOTICE: hello, world
15:39:53 T:1484  NOTICE: hello, world
15:39:53 T:5804  NOTICE: hello, world
15:39:53 T:3632  NOTICE: hello, world
15:39:53 T:6780  NOTICE: hello, world
15:39:53 T:4760  NOTICE: hello, world
15:39:53 T:6888  NOTICE: hello, world
15:39:53 T:7156  NOTICE: hello, world
15:39:54 T:6932  NOTICE: hello, world
15:39:54 T:7144  NOTICE: hello, world
15:39:54 T:6980  NOTICE: hello, world
15:39:54 T:4128  NOTICE: hello, world
15:39:54 T:6956  NOTICE: hello, world
15:39:54 T:6924  NOTICE: hello, world
15:39:54 T:6376  NOTICE: hello, world
15:39:54 T:5820  NOTICE: hello, world
15:39:54 T:6052  NOTICE: hello, world
15:39:54 T:1696  NOTICE: hello, world
15:39:54 T:1312  NOTICE: hello, world
15:39:54 T:3804  NOTICE: hello, world
15:39:54 T:4208  NOTICE: hello, world
15:39:54 T:5428  NOTICE: hello, world
15:39:54 T:6408  NOTICE: hello, world
15:39:54 T:6728  NOTICE: hello, world
15:39:54 T:5544  NOTICE: hello, world
15:39:54 T:6448  NOTICE: hello, world
15:39:54 T:1132  NOTICE: hello, world
15:39:54 T:1892  NOTICE: hello, world
15:39:54 T:3856  NOTICE: hello, world
15:39:54 T:6416  NOTICE: hello, world
15:39:54 T:5256  NOTICE: hello, world
15:39:54 T:5536  NOTICE: hello, world
15:39:54 T:2860  NOTICE: hello, world
15:39:54 T:4844  NOTICE: hello, world
15:39:54 T:4268  NOTICE: hello, world
15:39:54 T:3636  NOTICE: hello, world
15:39:54 T:7052  NOTICE: hello, world
15:39:54 T:6264  NOTICE: hello, world
15:39:54 T:6508  NOTICE: hello, world
15:39:54 T:2728  NOTICE: hello, world
15:39:54 T:3608  NOTICE: hello, world
15:39:54 T:5764  NOTICE: hello, world
15:39:54 T:7064  NOTICE: hello, world
15:39:54 T:7148  NOTICE: hello, world
15:39:54 T:3616  NOTICE: hello, world
15:39:54 T:5716  NOTICE: hello, world
15:39:54 T:416  NOTICE: hello, world
15:39:54 T:6216  NOTICE: hello, world
15:39:54 T:1828  NOTICE: hello, world
15:39:54 T:5492  NOTICE: hello, world
15:39:54 T:6560  NOTICE: hello, world
15:39:54 T:4392  NOTICE: hello, world
15:39:54 T:7096  NOTICE: hello, world
15:39:54 T:6436  NOTICE: hello, world
15:39:54 T:5048  NOTICE: hello, world
15:39:54 T:6788  NOTICE: hello, world
15:39:54 T:3300  NOTICE: hello, world
15:39:54 T:6392  NOTICE: hello, world
15:39:54 T:5608  NOTICE: hello, world
15:39:54 T:6240  NOTICE: hello, world
15:39:54 T:4976  NOTICE: hello, world
15:39:54 T:5752  NOTICE: hello, world
15:39:54 T:2944  NOTICE: hello, world
15:39:54 T:4640  NOTICE: hello, world
15:39:54 T:2268  NOTICE: hello, world
15:39:54 T:6716  NOTICE: hello, world
15:39:54 T:2148  NOTICE: hello, world
15:39:54 T:5500  NOTICE: hello, world
15:39:54 T:5416  NOTICE: hello, world
15:39:54 T:5384  NOTICE: hello, world
15:39:54 T:5512  NOTICE: hello, world
15:39:54 T:5844  NOTICE: hello, world
15:39:54 T:2280  NOTICE: hello, world
15:39:54 T:2612  NOTICE: hello, world
15:39:54 T:6012  NOTICE: hello, world
15:39:54 T:6820  NOTICE: hello, world
15:39:54 T:3904  NOTICE: hello, world
15:39:54 T:5648  NOTICE: hello, world
15:39:54 T:6516  NOTICE: hello, world
15:39:54 T:6768  NOTICE: hello, world
15:39:54 T:3464  NOTICE: hello, world
15:39:54 T:6896  NOTICE: hello, world
15:39:54 T:7040  NOTICE: hello, world
15:39:54 T:6672  NOTICE: hello, world
15:39:54 T:5760  NOTICE: hello, world
15:39:54 T:6664  NOTICE: hello, world
15:39:54 T:7024  NOTICE: hello, world
15:39:54 T:5956  NOTICE: hello, world
15:39:54 T:6632  NOTICE: hello, world
15:39:54 T:5452  NOTICE: hello, world
15:39:54 T:5356  NOTICE: hello, world
15:39:54 T:6704  NOTICE: hello, world
15:39:54 T:6352  NOTICE: hello, world
15:39:54 T:6660  NOTICE: hello, world
15:39:54 T:1436  NOTICE: hello, world
15:39:54 T:6252  NOTICE: hello, world
15:39:54 T:6348  NOTICE: hello, world
15:39:54 T:6832  NOTICE: hello, world
15:39:54 T:5628  NOTICE: hello, world
15:39:54 T:4220  NOTICE: hello, world
15:39:54 T:6160  NOTICE: hello, world
15:39:55 T:7004  NOTICE: hello, world
15:39:55 T:6740  NOTICE: hello, world
15:39:55 T:6572  NOTICE: hello, world
15:39:55 T:6592  NOTICE: hello, world
15:39:55 T:7116  NOTICE: hello, world
15:39:55 T:6504  NOTICE: hello, world
15:39:55 T:5008  NOTICE: hello, world
15:39:55 T:6636  NOTICE: hello, world
15:39:55 T:1172  NOTICE: hello, world
15:39:55 T:4156  NOTICE: hello, world
15:39:55 T:5560  NOTICE: hello, world
15:39:55 T:6188  NOTICE: hello, world
15:39:55 T:6120  NOTICE: hello, world
15:39:55 T:6576  NOTICE: hello, world
15:39:55 T:6324  NOTICE: hello, world
15:39:55 T:6712  NOTICE: hello, world
15:39:55 T:5940  NOTICE: hello, world
15:39:55 T:6064  NOTICE: hello, world
15:39:55 T:7008  NOTICE: hello, world
15:39:55 T:4596  NOTICE: hello, world
15:39:55 T:6700  NOTICE: hello, world
15:39:55 T:7092  NOTICE: hello, world
15:39:55 T:5292  NOTICE: hello, world
15:39:55 T:6060  NOTICE: hello, world
15:39:55 T:5360  NOTICE: hello, world
15:39:55 T:4412  NOTICE: hello, world
15:39:55 T:2812  NOTICE: hello, world
15:39:55 T:6724  NOTICE: hello, world
15:39:55 T:4048  NOTICE: hello, world
15:39:55 T:2104  NOTICE: hello, world
15:39:55 T:5596  NOTICE: hello, world
15:39:55 T:5196  NOTICE: hello, world
15:39:55 T:2892  NOTICE: hello, world
15:39:55 T:4484  NOTICE: hello, world
15:39:55 T:6164  NOTICE: hello, world
15:39:55 T:6608  NOTICE: hello, world
15:39:55 T:6364  NOTICE: hello, world
15:39:55 T:4444  NOTICE: hello, world
15:39:55 T:7036  NOTICE: hello, world
15:39:55 T:2896  NOTICE: hello, world
15:39:55 T:6620  NOTICE: hello, world
15:39:55 T:6548  NOTICE: hello, world
15:39:55 T:788  NOTICE: hello, world
15:39:55 T:6696  NOTICE: hello, world
15:39:55 T:6656  NOTICE: hello, world
15:39:55 T:4672  NOTICE: hello, world
15:39:55 T:5224  NOTICE: hello, world
15:39:55 T:1500  NOTICE: hello, world
15:39:55 T:6332  NOTICE: hello, world
15:39:55 T:5260  NOTICE: hello, world
15:39:55 T:4924  NOTICE: hello, world
15:39:55 T:6964  NOTICE: hello, world
15:39:55 T:6960  NOTICE: hello, world
15:39:55 T:6880  NOTICE: hello, world
15:39:55 T:6304  NOTICE: hello, world
15:39:55 T:6168  NOTICE: hello, world
15:39:55 T:6928  NOTICE: hello, world
15:39:55 T:6600  NOTICE: hello, world
15:39:55 T:5240  NOTICE: hello, world
15:39:55 T:7164  NOTICE: hello, world
15:39:55 T:6872  NOTICE: hello, world
15:39:55 T:6824  NOTICE: hello, world
15:39:55 T:4616  NOTICE: hello, world
15:39:55 T:6708  NOTICE: hello, world
15:39:55 T:6556  NOTICE: hello, world
15:39:55 T:3224  NOTICE: hello, world
15:39:55 T:1032  NOTICE: hello, world
15:39:55 T:1492  NOTICE: hello, world
15:39:55 T:6008  NOTICE: hello, world
15:39:55 T:6904  NOTICE: hello, world
15:39:55 T:3440  NOTICE: hello, world
15:39:55 T:3528  NOTICE: hello, world
15:39:55 T:6004  NOTICE: hello, world
15:39:55 T:6232  NOTICE: hello, world
15:39:55 T:6808  NOTICE: hello, world
15:39:55 T:6668  NOTICE: hello, world
15:39:55 T:5732  NOTICE: hello, world
15:39:55 T:4160  NOTICE: hello, world
15:39:55 T:6300  NOTICE: hello, world
15:39:55 T:2772  NOTICE: hello, world
15:39:55 T:3444  NOTICE: hello, world
15:39:55 T:6568  NOTICE: hello, world
15:39:55 T:1240  NOTICE: hello, world
15:39:55 T:1992  NOTICE: hello, world
15:39:55 T:6212  NOTICE: hello, world
15:39:55 T:6920  NOTICE: hello, world
15:39:55 T:6248  NOTICE: hello, world
15:39:55 T:6280  NOTICE: hello, world
15:39:55 T:7112  NOTICE: hello, world
15:39:55 T:6952  NOTICE: hello, world
15:39:55 T:6224  NOTICE: hello, world
15:39:55 T:4172  NOTICE: hello, world
15:39:56 T:6780  NOTICE: hello, world
15:39:56 T:4760  NOTICE: hello, world
15:39:56 T:6888  NOTICE: hello, world
15:39:56 T:6308  NOTICE: hello, world
15:39:56 T:6752  NOTICE: hello, world
15:39:56 T:6764  NOTICE: hello, world
15:39:56 T:1856  NOTICE: hello, world
15:39:56 T:5464  NOTICE: hello, world
15:39:56 T:6784  NOTICE: hello, world
15:39:56 T:4384  NOTICE: hello, world
15:39:56 T:5232  NOTICE: hello, world
15:39:56 T:4128  NOTICE: hello, world
15:39:56 T:5284  NOTICE: hello, world
15:39:56 T:6376  NOTICE: hello, world
15:39:56 T:3256  NOTICE: hello, world
15:39:56 T:1312  NOTICE: hello, world
15:39:56 T:3804  NOTICE: hello, world
15:39:56 T:6408  NOTICE: hello, world
15:39:56 T:5392  NOTICE: hello, world
15:39:56 T:1132  NOTICE: hello, world

Solution

  • I'm not familiar with with the way you choose to do the progressbar, basicly sleep the app sounds bad idea to me, and you might want to find a better way to do it.

    But, if you want to run 2 different actions - you need to use threading. A small example

    def function_1():
        for i in range(5):
            print "1111"
            time.sleep(1)
    
    def function_2():
        for i in range(5):
            print "2222"
            time.sleep(1)
    
    t1 = threading.Thread(target=function_1)
    t2 = threading.Thread(target=function_2)
    
    t1.start()
    t2.start()
    

    If you were called the 2 functions without threading you would get and out of all the '111's and then all the '222's.

    When using threading i got this:

    1111
    2222
    2222
    1111
    1111
    2222
    2222
    1111
    2222
    1111
    

    Because it happened paralleled. Hope it was clear enough.