我试着理解线程是如何工作的。
这是我无限运行的代码:
while(True):
# Check All Streams if they are online AND with which Summoner #
checkStreams()
# Check if we have new finished games #
if newGames:
getMatchHistory()
updateSummonerStats()
# Update Online Stats #
updateOnline()
checkStreams()
是一个相当小的功能,但getMatchHistory()
和updateSummonerStats()
需要相当长的时间而且不会经常运行。
因此,我们的想法是在两个单独的线程中运行这两个函数。
从我在这里阅读http://softwareramblings.com/2008/06/running-functions-as-threads-in-python.html我的方法就是:
这些函数应该运行是单独的线程,但后面的函数应该立即继续
if newGames:
t1 = threading.Thread(target=getMatchHistory)
t1.start()
t2 = threading.Thread(target=updateSummonerStats)
t2.start()
现在我遇到了这个问题:两个线程函数都访问我的MySQL数据库并导致此错误:Packet sequence number wrong - got 0 expected 2
和许多类似的错误。
这对于并列功能是否是正确的方法还是有更好的解决方案?