파이썬 코드가 있습니다. 예를 들어 1 시간이면 스레드가 완료되지 않고 모든 스레드가 끝나고 스크립트가 끝납니다. 내 모든 스레드가 완료됩니다.파이썬에서 나중에 스레드를 죽이십시오
나는 잠을 자다가 시간을 보내고, 시간이 끝나면 : sys.exit()
하지만 항상 내 수면 스레드를 기다리고 있기 때문에, 내게는 효과가 없다. 스레드가 완료되고 sys.exit()
이 작동하지 않습니다.
import socket, threading, time, sys
from sys import argv
import os
acc_time=0
transactions_ps=5
ins = open(sys.argv[1],'r')
msisdn_list = []
for line in ins:
msisdn_list.append (line.strip('\n'))
# print line
ins.close()
def worker(msisdn_list):
semaphore.acquire()
global transactions_ps
print " ***** ", threading.currentThread().getName(), "Lanzado"
count=1
acc_time=0
print "len: ",len(msisdn_list)
for i in msisdn_list:
try:
init=time.time()
time.sleep(2)
print "sleeping...",i
time.sleep(4)
final=time.time()
acc_time = acc_time+final-init
print acc_time
except IOError:
print "Connection failed",sys.exc_info()[0]
print "Deteniendo ",threading.currentThread().getName()
semaphore.release()
def kill_process(secs_to_die):
time.sleep(secs_to_die)
sys.exit()
seconds_to_die=3600
thread_kill = threading.Thread(target = kill_process, args=(seconds_to_die,))
thread_kill.start()
max_con=5
semaphore = threading.BoundedSemaphore(max_con)
for i in range(0,28,transactions_ps):
w = threading.Thread(target=worker, args=(msisdn_list[i:i+transactions_ps-1],))
w.setDaemon(True)
w.start()
수행 할 수 있습니다 어떻게
이 코드는 나를 위해 잘 작동 - 그것은 secs_do_die'이 경과 한'때까지, 다음 전체 스크립트가 종료 기다립니다. 이 코드가 사용중인 실제 코드입니까? 파일로 열기 (sys.argv [1]) : – dano
'with open (sys.argv [1]) : msisdn_list = file.read(). splitlines()' – jfs