我真的试图在实际应用中围绕线程概念的概念。我在 python 3.4 中使用Threading
模块,我不确定逻辑是否适合程序功能。
以下是我的代码的要点:
def myMain():
""" my main function actually uses sockets to
send data over a network
"""
# there will be an infinite loop call it loop-1 here
while True:
#perform encoding scheme
#send data out... with all other exception handling
# here is infinite loop 2 which waits for messages
# from other devices
while True:
# Check for incoming messages
callCheckFunction() ----> Should I call this on a thread?
上面提到的callCheckFunction()
将对收到的数据进行一些比较,如果数据值不匹配,我想再次运行myMain()
函数。
以下是callCheckFunction()
:
def callCheckFunction():
if data == 'same':
# some work done here and then get out
# function and return back to listening on the socket
else data == 'not same':
myMain() ---------> Should I thread this one too??
这可能很复杂,但我不确定线程是否是我想要的东西。我通过调用上面提到的myMain()
函数做了一个讨厌的黑客,它很棒!但我认为在函数中调用函数肯定会有一些限制,我希望我的代码有点专业而不是Hacky!
我的想法设置在线程,因为当一些新数据进入整个myMain()
时,我以无限方式收听套接字回来创造一种我想要控制的繁忙的递归。
所以我设法使代码更加模块化,即我将两个无限循环分成两个不同的函数
现在myMain
分为
task1()
task2()
,要点如下:
def task1():
while True:
# encoding and sending data
#in the end I call task2() since it the primary
# state which decides things
task2() ---------> still need to decide if I should thread or not
def task2():
while True:
# check for incoming messages
checker = threading.Thread(callCheckFunction, daemon=True)
checker.start()
checker.join()
现在由于callCheckFunction()
需要func1()
,我决定注意 func1()
线程 func1
实际上是代码的main()
:
def callCheckFunction():
else data == 'not same':
thready = threading.Thread(func1, daemon= True)
thready.start()
thready.join()
我很少理解我设法使代码正常工作。但我不确定这是真的 hacky 还是一种专业的做事方式!我可以通过GitHub和系统的有限状态机共享代码。此外,我不确定此代码是否线程安全!但真的需要帮助/建议