bekam eine Spinne, die auf eine Datenbank zu kriechen und fügen Sie versucht, und dachte, ich threading verwenden würde die Dinge ein wenigPython Threading, Liste von 10 Links genommen als 10 Positionsargumente
hier zu beschleunigen bis der Code :
def final_function(link_set):
root = 'http://www.rightmove.co.uk'
pages = []
for link in link_set:
try:
links = forty_page_getter(link)
pages.append(links)
except:
print('not possible for:' + str(link))
pass
flattened = [item for sublist in pages for item in sublist]
print('flattened done')
for page in flattened:
print(len(flattened))
try:
page_stripper(link=(root+page))
except:
print('couldnt do it for')
pass
so das ist die letzte Funktion, die eine Liste von Links als ein Argument aufnimmt. Mein Problem ist hier:
if __name__ == "__main__":
areas = pd.read_csv('postcodes.csv')
areas = areas['0']
result_list = split_list(flattened=areas, chunk_size=10)
threads = []
outer_count = 1
# here ten postcode links
for i in result_list:
print('Started thread No. ' + str(outer_count))
t = threading.Thread(target=final_function, args=i)
threads.append(t)
t.start()
outer_count += 1
i eine Unterliste von Links, von dem aus ich Gehäusedaten bekommen, seine Länge zehn ist, weshalb ich eine Ausnahme
Exception in thread Thread-1:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
TypeError: final_function() takes 1 positional argument but 10 were given
bekommen ist es trotzdem Ich könnte das überspringen? Im stecken die Ideen aus, wie ich einfach dachte beiläufig, dass als Argument würde
EDIT Sinn ergeben: behobenes mich, ich weiß nicht, warum, aber alles, was Sie tun müssen, ist
t = threading.Thread(target=final_function, args=(i,))
, die es löst