설정 : serienchecker.py 파이썬 스레딩이 작동 밤은
import threading
...other imports ...
... vars ...
for drive in drives:
series = folder.getFolders(drive)
for serie in series:
print(str(datetime.datetime.now()))
t = threading.Thread(target=serienchecker, args=(drive, serie, blacklist,apikeyv3,language,))
t.start()
t.join()
init.py
from threading import Thread
from themoviedb import *
from folderhelper import *
class serienchecker(Thread):
...
def __init__(self, path,seriesname, blacklist, apikeytmdb='', language='eng'):
...
self.startSearch()
...
def startSearch(self):
print("start")
...
출력 :
2017-02-08 21:29:04.481536
start
2017-02-08 21:29:17.385611
start
2017-02-08 21:30:00.548471
start
그러나 내가 그들 모두가 주위에서 계산하려면 같은 시간. 어쩌면 모든 작업을 큐에 대기시키고 N 개의 스레드를 동시에 처리 할 수 있습니까? [이것은 스크립트가 몇 개의 hundert 폴더를 검사하는 작은 예일뿐입니다] 내가 잘못하고 싶습니까?
나는 여러 가지 방법으로 효과를 냈습니다. 도와주세요.
고마워요!
편집 : //
이def job():
while(jobs):
tmp = jobs.pop()
task(drive=tmp[0],serie=tmp[1])
def task(drive, serie):
print("Serie[{0}]".format(serie))
sc = serienchecker(drive, serie,blacklist,apikeyv3,language)
sc.start()
result = sc.result
resultString=''
for obj in result:
resultString+=obj+"\n"
print(resultString)
for drive in drives:
series = folder.getFolders(drive)
for serie in series:
jobs.append([drive,serie])
while(jobs):
job()
왜 모든 스레드가 '시작'한 직후 모든 스레드에 '가입'합니까? 그러면 다른 스레드를 시작하기 전에 스레드가 완료 될 때까지 기다립니다. 또한 스레드의'target'을'Thread'의 하위 클래스로 만드는 것은 말이되지 않습니다. – user2357112