Форум сайта python.su
0
Добрый День!
Столкнулся с такой ситуацией.
Есть цикл
for row in cursor.fetchall():
os.system("python generate.py " + row[0])
time.sleep(1)
try:
cursor1.execute("""UPDATE links SET created = 1 WHERE domain = %s""", (row[0]) );
db1.commit()
except:
db1.rollback()
Офлайн
2
запускайте скрипт в отдельном потоке
Офлайн
0
Что то наподобии этого:
import time
from multiprocessing import Process
class Example(Process):
def __init__(self, row, *argv, **kwargv):
super(Example, self).__init__(*argv, **kwargv)
self.row = row
self.resualt = None
def run(self):
import os
os.system("python generate.py ") + row[0])
try:
cursor1.execute("""UPDATE links SET created = 1 WHERE domain = %s""", (row[0]) );
db1.commit()
self.resualt=True
except Exception:
db1.rollback()
self.resualt = False
for row in cursor.fetchall():
e = Example(row)
e.start()
t0 = time.time()
while True:
if e.resualt or (time.time()-t0 > 30):
e.terminate()
break
time.sleep(1)
Офлайн
0
SyaoЯ правильно понимаю, что строчка e.terminate() - как раз и уничтожает процесс?
Главное, не забывайте уничтожать процессы по истечении времени.
Офлайн
0
POLLДа.SyaoЯ правильно понимаю, что строчка e.terminate() - как раз и уничтожает процесс?
Главное, не забывайте уничтожать процессы по истечении времени.
Офлайн
0
SyaoСпасибо за помощь!POLLДа.SyaoЯ правильно понимаю, что строчка e.terminate() - как раз и уничтожает процесс?
Главное, не забывайте уничтожать процессы по истечении времени.
З.Ы. http://docs.python.org/library/multiprocessing.html#multiprocessing.Process.terminate
Офлайн