기본적으로 나는 선택할 수있는 몇 가지 옵션이있는 응용 프로그램을 빌드하고 있습니다.스레드 클래스가있는 모듈을 릴리스하고 파이썬 제어하기
이름이 인 main.py인데 각 모듈을 별도로 실행할 수 있도록 가능한 옵션마다 독립 실행 형 모듈을 작성했습니다. 이제 제가 작성한이 모듈에는 스레드 된 클래스가 들어 있습니다. 내가 명령 할 때 가지고있는 문제 : python mod_keepOnline.py
은 터미널에 다시 제어권을 넘겨주지 않는다는 것입니다. 모듈 최저점 main.py을 실행하면 main.py은 새로운 선택을 듣기를 중단합니다. 나는 그것이 실 때문에인지 알아. 나는 그들이 "산란 된 후에 쓰레드가 자신의 것을 관리하게"할 수있는 방법을 궁금해했다. 따라서 mod_keepOnline.py
에서 터미널 또는 메인 스크립트로 다시 제어하십시오.
릴리스 된 스레드를 다시 죽일 수 있기를 원합니다.
뭔가 mod_keepOnline.py -killAll
처럼
음을 heres 내 코드는 를 :
###########################################
################## SynBitz.net ############
import threading
import objects
import time
import mechanize
import os
import gb
##########################################
class Class_putOnline (threading.Thread):
def __init__ (self,person,onlineTime):
threading.Thread.__init__ (self)
self.startTime = time.time()
self.alive = True
self.person = person
self.onlineTime = onlineTime
self.firstMessage=True
def run(self):
while(self.alive):
if(self.firstMessage):
print self.person.getInfo() + " SPAWNED ONLINE"
self.firstMessage=False
self.person.login()
time.sleep(300)
self.person.logout()
if((time.time()-self.startTime) > self.onlineTime):
print self.person.getInfo() + " SPAWNED OFFLINE "
self.alive = False
self._Thread__stop()
#########################################
def main():
for line in open(gb.accFile,"r"):
gb.accountList.append(line.rstrip('\n'))
for account in gb.accountList:
gb.accountInfo = account.split('|',4)
browser = mechanize.Browser()
browser.set_handle_robots(False)
browser.set_handle_redirect(True)
browser.set_handle_referer(True)
browser.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
gb.spiderList.append(objects.spider.Bot(gb.accountInfo[0],gb.accountInfo[2],gb.accountInfo[1],gb.accountInfo[3],browser))
if gb.accountInfo[2] not in gb.distros:
gb.distros.append(gb.accountInfo[2])
onlineAccounts = []
for index, acc in enumerate(gb.spiderList):
onlineAccounts.append(Class_putOnline(acc,115200)) # 600*6*8*4= 28800 = 8 uur 3600 test seconds = 1 h (1200 seconds for test time of 20 minutes... )
time.sleep(0.1)
onlineAccounts[index].start()
if __name__ == "__main__":
main()
내가 백그라운드에서 실행하는 경우에도, 내 서버에 SSH 세션을 열고 파이썬 스크립트를 실행, 내가 후 사망 내 세션을 닫으십시오. 연결되지 않은 상태에서 스크립트를 계속 실행하려면 어떻게해야합니까?
다른 방법으로 프로그램을 실행하지 않고이 문제를 해결할 방법이 없습니다 (가장 좋은 방법은 수동 cronjob이 될 것입니다. 타이슨이 제안했습니다). 아마도 모듈이 무엇을하려고하는지 말할 수 있습니다. –